diff --git a/.env b/.env index 4d849a121..dcb5cdb41 100644 --- a/.env +++ b/.env @@ -1,6 +1,10 @@ NEO4J_URI=bolt://localhost:7687 NEO4J_USER=neo4j NEO4J_PASSWORD=letmein + GRAPHQL_LISTEN_PORT=4000 GRAPHQL_URI=http://localhost:4000 +CLIENT_URI=http://localhost:3000 +JWT_SECRET=b/&&7b78BF&fv/Vd + MOCK=false diff --git a/.gitignore b/.gitignore index c2658d7d1..c8fcd1649 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ node_modules/ +.vscode diff --git a/package.json b/package.json index 227824f28..1612d5211 100644 --- a/package.json +++ b/package.json @@ -16,20 +16,27 @@ "apollo-client": "^2.3.2", "apollo-link-http": "^1.5.4", "apollo-server": "^2.0.4", + "bcryptjs": "^2.4.3", "dotenv": "^6.0.0", "graphql-custom-directives": "^0.2.13", "graphql-middleware": "^1.7.6", "graphql-tag": "^2.9.2", + "graphql-yoga": "^1.16.2", + "jsonwebtoken": "^8.3.0", + "lodash": "^4.17.11", + "ms": "^2.1.1", "neo4j-driver": "^1.6.1", "neo4j-graphql-js": "^1.0.2", "node-fetch": "^2.1.2", + "passport": "^0.4.0", + "passport-jwt": "^4.0.0", "slug": "^0.9.1", "trunc-html": "^1.1.2" }, "devDependencies": { - "faker": "^4.1.0", "babel-cli": "^6.26.0", "babel-preset-env": "^1.7.0", - "nodemon": "^1.17.5" + "faker": "^4.1.0", + "nodemon": "^1.18.4" } } diff --git a/src/graphql-schema.js b/src/graphql-schema.js index 3a0c954cb..9f7699c77 100644 --- a/src/graphql-schema.js +++ b/src/graphql-schema.js @@ -1,17 +1,62 @@ // import { neo4jgraphql } from "neo4j-graphql-js" import fs from 'fs' import path from 'path' +import bcrypt from 'bcryptjs' +import zipObject from 'lodash/zipObject' +import generateJwt from './jwt/generateToken' +import { fixUrl } from './middleware/fixImageUrlsMiddleware' export const typeDefs = fs.readFileSync(process.env.GRAPHQL_SCHEMA || path.join(__dirname, "schema.graphql")) .toString('utf-8') export const resolvers = { - // Query: { - // usersBySubstring: neo4jgraphql - // } -} + Query: { + isLoggedIn: (parent, args, { user }) => { + console.log(user) + return Boolean(user && user.id) + } + // usersBySubstring: neo4jgraphql + }, + Mutation: { + signup: async (parent, { email, password }, { req }) => { + // if (data[email]) { + // throw new Error('Another User with same email exists.') + // } + // data[email] = { + // password: await bcrypt.hashSync(password, 10), + // } -export const mutations = { + return true + }, + login: async (parent, { email, password }, { driver, req, user }) => { + // if (user && user.id) { + // throw new Error('Already logged in.') + // } + const session = driver.session() + const res = await session.run('MATCH (u:User {email: "' + email + '"}) RETURN u.id, u.slug, u.name, u.avatar, u.email, u.password, u.role LIMIT 1') + let u = res.records[0]._fields ? zipObject([ + 'id', + 'slug', + 'name', + 'avatar', + 'email', + 'password', + 'role' + ], res.records[0]._fields) : null + if (u) { + if (await bcrypt.compareSync(password, u.password)) { + delete u.password + u.avatar = fixUrl(u.avatar) + return Object.assign(u, { + token: generateJwt(u) + }) + } + throw new Error('Incorrect password.') + } + + throw new Error('No Such User exists.') + } + } } diff --git a/src/index.js b/src/index.js index 4f39b5f0a..8cae4d4f6 100644 --- a/src/index.js +++ b/src/index.js @@ -1,21 +1,21 @@ -// import { GraphQLServer } from 'graphql-yoga' -import { applyMiddleware } from 'graphql-middleware' -import { ApolloServer, makeExecutableSchema } from 'apollo-server' +import { GraphQLServer } from 'graphql-yoga' +import { makeExecutableSchema } from 'apollo-server' import { augmentSchema } from 'neo4j-graphql-js' import { typeDefs, resolvers } from './graphql-schema' import { v1 as neo4j } from 'neo4j-driver' -import passwordMiddleware from './middleware/passwordMiddleware' -import softDeleteMiddleware from './middleware/softDeleteMiddleware' -import sluggifyMiddleware from './middleware/sluggifyMiddleware' -import fixImageUrlsMiddleware from './middleware/fixImageUrlsMiddleware' -import excerptMiddleware from './middleware/excerptMiddleware' import dotenv from 'dotenv' -import { - GraphQLLowerCaseDirective, - GraphQLTrimDirective, - GraphQLDefaultToDirective -} from 'graphql-custom-directives'; -import faker from 'faker' +import mocks from './mocks' +import middleware from './middleware' + +import passport from 'passport' +import jwtStrategy from './jwt/strategy' +import jwt from 'jsonwebtoken' + +// import { +// GraphQLLowerCaseDirective, +// GraphQLTrimDirective, +// GraphQLDefaultToDirective +// } from 'graphql-custom-directives'; dotenv.config() @@ -25,15 +25,15 @@ const schema = makeExecutableSchema({ }) // augmentSchema will add auto generated mutations based on types in schema -const augmentedSchema = augmentSchema(schema) +// const augmentedSchema = augmentSchema(schema) // add custom directives -const directives = [ - GraphQLLowerCaseDirective, - GraphQLTrimDirective, - GraphQLDefaultToDirective -] -augmentedSchema._directives.push.apply(augmentedSchema._directives, directives) +// const directives = [ +// GraphQLLowerCaseDirective, +// GraphQLTrimDirective, +// GraphQLDefaultToDirective +// ] +// augmentedSchema._directives.push.apply(augmentedSchema._directives, directives) const driver = neo4j.driver( process.env.NEO4J_URI || 'bolt://localhost:7687', @@ -46,25 +46,51 @@ const driver = neo4j.driver( const MOCK = (process.env.MOCK === 'true') console.log('MOCK:', MOCK) -const server = new ApolloServer({ - context: { - driver +const server = new GraphQLServer({ + context: async (req) => { + const payload = { + driver, + user: null, + req: req.request + } + try { + const token = payload.req.headers.authorization.replace('Bearer ', '') + payload.user = await jwt.verify(token, process.env.JWT_SECRET) + } catch (err) {} + + return payload }, + schema: augmentSchema(schema), tracing: true, - schema: applyMiddleware(augmentedSchema, passwordMiddleware, sluggifyMiddleware, excerptMiddleware, fixImageUrlsMiddleware, softDeleteMiddleware), - mocks: MOCK ? { - User: () => ({ - name: () => `${faker.name.firstName()} ${faker.name.lastName()}`, - email: () => `${faker.internet.email()}` - }), - Post: () => ({ - title: () => faker.lorem.lines(1), - slug: () => faker.lorem.slug(3), - content: () => faker.lorem.paragraphs(5), - contentExcerpt: () => faker.lorem.paragraphs(1) - }) - } : false + middlewares: middleware, + mocks: MOCK ? mocks : false }) -server.listen().then(({ url }) => { - console.log(`Server ready at ${url} 🚀`); + +passport.use('jwt', jwtStrategy()) +server.express.use(passport.initialize()) + +server.express.post('/graphql', passport.authenticate(['jwt'], { session: false })) + +// session middleware +// server.express.use(session({ +// name: 'qid', +// secret: process.env.JWT_SECRET, +// resave: true, +// saveUninitialized: true, +// cookie: { +// secure: process.env.NODE_ENV === 'production', +// maxAge: ms('1d') +// } +// })) + +const serverConfig = { + port: 4000 + // cors: { + // credentials: true, + // origin: [process.env.CLIENT_URI] // your frontend url. + // } +} + +server.start(serverConfig, options => { + console.log(`Server ready at ${process.env.GRAPHQL_URI} 🚀`); }) diff --git a/src/jwt/generateToken.js b/src/jwt/generateToken.js new file mode 100644 index 000000000..f02ea7c8f --- /dev/null +++ b/src/jwt/generateToken.js @@ -0,0 +1,18 @@ + +import jwt from 'jsonwebtoken' +import ms from 'ms' + +// Generate an Access Token for the given User ID +export default function generateJwt(user) { + console.log('generateJwt', user) + const token = jwt.sign(user, process.env.JWT_SECRET, { + expiresIn: ms('1d'), + issuer: process.env.GRAPHQL_URI, + audience: process.env.CLIENT_URI, + subject: user.id.toString() + }) + jwt.verify(token, process.env.JWT_SECRET, (err, data) => { + console.log('token verification:', err, data) + }) + return token +} diff --git a/src/jwt/strategy.js b/src/jwt/strategy.js new file mode 100644 index 000000000..97593ae82 --- /dev/null +++ b/src/jwt/strategy.js @@ -0,0 +1,30 @@ +import { Strategy } from 'passport-jwt' + +const cookieExtractor = (req) => { + var token = null + if (req && req.cookies) { + token = req.cookies['jwt'] + } + return token +} + +export default () => { + const options = { + jwtFromRequest: cookieExtractor, + secretOrKey: process.env.JWT_SECRET, + issuer: process.env.GRAPHQL_URI, + audience: process.env.CLIENT_URI + } + + return new Strategy(options, + (JWTPayload, next) => { + console.log('JWT Payload Received:', JWTPayload) + // usually this would be a database call: + // var user = users[_.findIndex(users, {id: JWTPayload.id})] + if (true) { + next(null, {}) + } else { + next(null, false) + } + }) +} diff --git a/src/middleware/fixImageUrlsMiddleware.js b/src/middleware/fixImageUrlsMiddleware.js index 218f3c2ea..04c08c303 100644 --- a/src/middleware/fixImageUrlsMiddleware.js +++ b/src/middleware/fixImageUrlsMiddleware.js @@ -1,21 +1,24 @@ -const replaceURL = (url) => { +export const fixUrl = (url) => { return url.replace('https://api-alpha.human-connection.org/uploads', 'http://localhost:3000/uploads') } const fixImageURLs = (result, resolve, root, args, context, info) => { if (result && typeof result === 'string' && result.indexOf('https://api-alpha.human-connection.org/uploads') === 0) { - result = replaceURL(result) + result = fixUrl(result) } else if (result && typeof result === 'object') { Object.keys(result).forEach(key => { result[key] = fixImageURLs(result[key]) }) } - return result } export default { + Mutation: async (resolve, root, args, context, info) => { + const result = await resolve(root, args, context, info) + return fixImageURLs(result, resolve, root, args, context, info) + }, Query: async (resolve, root, args, context, info) => { let result = await resolve(root, args, context, info) diff --git a/src/middleware/index.js b/src/middleware/index.js new file mode 100644 index 000000000..9a32862c3 --- /dev/null +++ b/src/middleware/index.js @@ -0,0 +1,13 @@ +import passwordMiddleware from './passwordMiddleware' +import softDeleteMiddleware from './softDeleteMiddleware' +import sluggifyMiddleware from './sluggifyMiddleware' +import fixImageUrlsMiddleware from './fixImageUrlsMiddleware' +import excerptMiddleware from './excerptMiddleware' + +export default [ + passwordMiddleware, + sluggifyMiddleware, + excerptMiddleware, + fixImageUrlsMiddleware, + softDeleteMiddleware +] diff --git a/src/mocks/index.js b/src/mocks/index.js new file mode 100644 index 000000000..a87ccfbbc --- /dev/null +++ b/src/mocks/index.js @@ -0,0 +1,15 @@ + +import faker from 'faker' + +export default { + User: () => ({ + name: () => `${faker.name.firstName()} ${faker.name.lastName()}`, + email: () => `${faker.internet.email()}` + }), + Post: () => ({ + title: () => faker.lorem.lines(1), + slug: () => faker.lorem.slug(3), + content: () => faker.lorem.paragraphs(5), + contentExcerpt: () => faker.lorem.paragraphs(1) + }) +} diff --git a/src/schema.graphql b/src/schema.graphql index f67b53bf2..0334b4124 100644 --- a/src/schema.graphql +++ b/src/schema.graphql @@ -1,3 +1,20 @@ +type Query { + isLoggedIn: Boolean! +} +type Mutation { + login(email: String!, password: String!): LoggedInUser + signup(email: String!, password: String!): Boolean! +} +type LoggedInUser { + id: ID! + slug: String! + name: String! + avatar:String! + email: String! + role: String!, + token: String! +} + enum VisibilityEnum { Public Friends diff --git a/yarn.lock b/yarn.lock index e897cb8e2..ab036af96 100644 --- a/yarn.lock +++ b/yarn.lock @@ -21,6 +21,12 @@ core-js "^2.5.7" regenerator-runtime "^0.12.0" +"@babel/runtime@^7.0.0-beta.40": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.1.2.tgz#81c89935f4647706fc54541145e6b4ecfef4b8e3" + dependencies: + regenerator-runtime "^0.12.0" + "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" @@ -66,13 +72,13 @@ "@types/accepts@^1.3.5": version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.5.tgz#c34bec115cfc746e04fe5a059df4ce7e7b391575" + resolved "http://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz#c34bec115cfc746e04fe5a059df4ce7e7b391575" dependencies: "@types/node" "*" "@types/async@2.0.49": version "2.0.49" - resolved "https://registry.yarnpkg.com/@types/async/-/async-2.0.49.tgz#92e33d13f74c895cb9a7f38ba97db8431ed14bc0" + resolved "http://registry.npmjs.org/@types/async/-/async-2.0.49.tgz#92e33d13f74c895cb9a7f38ba97db8431ed14bc0" "@types/body-parser@*", "@types/body-parser@1.17.0": version "1.17.0" @@ -95,7 +101,7 @@ "@types/events@*": version "1.2.0" - resolved "https://registry.yarnpkg.com/@types/events/-/events-1.2.0.tgz#81a6731ce4df43619e5c8c945383b3e62a89ea86" + resolved "http://registry.npmjs.org/@types/events/-/events-1.2.0.tgz#81a6731ce4df43619e5c8c945383b3e62a89ea86" "@types/express-serve-static-core@*": version "4.16.0" @@ -105,7 +111,7 @@ "@types/node" "*" "@types/range-parser" "*" -"@types/express@*", "@types/express@4.16.0": +"@types/express@*", "@types/express@4.16.0", "@types/express@^4.11.1": version "4.16.0" resolved "https://registry.yarnpkg.com/@types/express/-/express-4.16.0.tgz#6d8bc42ccaa6f35cf29a2b7c3333cb47b5a32a19" dependencies: @@ -113,6 +119,14 @@ "@types/express-serve-static-core" "*" "@types/serve-static" "*" +"@types/graphql-deduplicator@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/graphql-deduplicator/-/graphql-deduplicator-2.0.0.tgz#9e577b8f3feb3d067b0ca756f4a1fb356d533922" + +"@types/graphql@^0.13.0": + version "0.13.4" + resolved "https://registry.yarnpkg.com/@types/graphql/-/graphql-0.13.4.tgz#55ae9c29f0fd6b85ee536f5c72b4769d5c5e06b1" + "@types/long@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.0.tgz#719551d2352d301ac8b81db732acb6bdc28dbdef" @@ -122,8 +136,8 @@ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.0.tgz#5a7306e367c539b9f6543499de8dd519fac37a8b" "@types/node@*", "@types/node@^10.1.0": - version "10.11.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.11.4.tgz#e8bd933c3f78795d580ae41d86590bfc1f4f389d" + version "10.12.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.0.tgz#ea6dcbddbc5b584c83f06c60e82736d8fbb0c235" "@types/range-parser@*": version "1.2.2" @@ -143,6 +157,10 @@ "@types/events" "*" "@types/node" "*" +"@types/zen-observable@^0.5.3": + version "0.5.4" + resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.5.4.tgz#b863a4191e525206819e008097ebf0fb2e3a1cdc" + "@types/zen-observable@^0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.0.tgz#8b63ab7f1aa5321248aad5ac890a485656dcea4d" @@ -209,6 +227,12 @@ apollo-boost@^0.1.10: apollo-link-state "^0.4.0" graphql-tag "^2.4.2" +apollo-cache-control@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/apollo-cache-control/-/apollo-cache-control-0.1.1.tgz#173d14ceb3eb9e7cb53de7eb8b61bee6159d4171" + dependencies: + graphql-extensions "^0.0.x" + apollo-cache-control@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/apollo-cache-control/-/apollo-cache-control-0.2.5.tgz#0831ad796754a7beec858668f99e7517fe744a1e" @@ -217,12 +241,12 @@ apollo-cache-control@^0.2.5: graphql-extensions "^0.2.1" apollo-cache-inmemory@^1.2.10, apollo-cache-inmemory@^1.2.5: - version "1.2.10" - resolved "https://registry.yarnpkg.com/apollo-cache-inmemory/-/apollo-cache-inmemory-1.2.10.tgz#362d6c36cfd815a309b966f71e5d2b6c770c7989" + version "1.3.5" + resolved "https://registry.yarnpkg.com/apollo-cache-inmemory/-/apollo-cache-inmemory-1.3.5.tgz#7628ee598271cfffa611e15a7ce67652a84b07b0" dependencies: apollo-cache "^1.1.17" apollo-utilities "^1.0.21" - graphql-anywhere "^4.1.19" + optimism "^0.6.6" apollo-cache@1.1.17, apollo-cache@^1.1.17: version "1.1.17" @@ -312,6 +336,14 @@ apollo-server-caching@0.1.2, apollo-server-caching@^0.1.2: dependencies: lru-cache "^4.1.3" +apollo-server-core@^1.3.6, apollo-server-core@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/apollo-server-core/-/apollo-server-core-1.4.0.tgz#4faff7f110bfdd6c3f47008302ae24140f94c592" + dependencies: + apollo-cache-control "^0.1.0" + apollo-tracing "^0.1.0" + graphql-extensions "^0.0.x" + apollo-server-core@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/apollo-server-core/-/apollo-server-core-2.1.0.tgz#b56f9f1ddb948b257e738eb25c5fdfd2f2fb2e07" @@ -345,6 +377,13 @@ apollo-server-errors@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/apollo-server-errors/-/apollo-server-errors-2.0.2.tgz#e9cbb1b74d2cd78aed23cd886ca2d0c186323b2b" +apollo-server-express@^1.3.6: + version "1.4.0" + resolved "https://registry.yarnpkg.com/apollo-server-express/-/apollo-server-express-1.4.0.tgz#7d7c58d6d6f9892b83fe575669093bb66738b125" + dependencies: + apollo-server-core "^1.4.0" + apollo-server-module-graphiql "^1.4.0" + apollo-server-express@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/apollo-server-express/-/apollo-server-express-2.1.0.tgz#b2d423c2c934df5c4e0a1b0d5f0088a9461f3c86" @@ -363,6 +402,17 @@ apollo-server-express@^2.1.0: graphql-tools "^3.0.4" type-is "^1.6.16" +apollo-server-lambda@1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/apollo-server-lambda/-/apollo-server-lambda-1.3.6.tgz#bdaac37f143c6798e40b8ae75580ba673cea260e" + dependencies: + apollo-server-core "^1.3.6" + apollo-server-module-graphiql "^1.3.4" + +apollo-server-module-graphiql@^1.3.4, apollo-server-module-graphiql@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/apollo-server-module-graphiql/-/apollo-server-module-graphiql-1.4.0.tgz#c559efa285578820709f1769bb85d3b3eed3d8ec" + apollo-server@^2.0.4: version "2.1.0" resolved "https://registry.yarnpkg.com/apollo-server/-/apollo-server-2.1.0.tgz#abec7853647c59f386087352cc7f06a4f1f8afe2" @@ -373,6 +423,12 @@ apollo-server@^2.0.4: graphql-subscriptions "^0.5.8" graphql-tools "^3.0.4" +apollo-tracing@^0.1.0: + version "0.1.4" + resolved "http://registry.npmjs.org/apollo-tracing/-/apollo-tracing-0.1.4.tgz#5b8ae1b01526b160ee6e552a7f131923a9aedcc7" + dependencies: + graphql-extensions "~0.0.9" + apollo-tracing@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/apollo-tracing/-/apollo-tracing-0.2.5.tgz#15bb8d6f37efe8c1bb6351e8e21521dd4f14c5f2" @@ -380,6 +436,14 @@ apollo-tracing@^0.2.5: apollo-server-env "^2.0.3" graphql-extensions "^0.2.1" +apollo-upload-server@^5.0.0: + version "5.0.0" + resolved "http://registry.npmjs.org/apollo-upload-server/-/apollo-upload-server-5.0.0.tgz#c953b523608313966e0c8444637f4ae8ef77d5bc" + dependencies: + "@babel/runtime" "^7.0.0-beta.40" + busboy "^0.2.14" + object-path "^0.11.4" + apollo-utilities@1.0.21, apollo-utilities@^1.0.0, apollo-utilities@^1.0.1, apollo-utilities@^1.0.21, apollo-utilities@^1.0.8: version "1.0.21" resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.0.21.tgz#cb8b5779fe275850b16046ff8373f4af2de90765" @@ -398,6 +462,12 @@ are-we-there-yet@~1.1.2: delegates "^1.0.0" readable-stream "^2.0.6" +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + dependencies: + sprintf-js "~1.0.2" + arr-diff@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" @@ -458,6 +528,28 @@ atob@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" +aws-lambda@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/aws-lambda/-/aws-lambda-0.1.2.tgz#19b1585075df31679597b976a5f1def61f12ccee" + dependencies: + aws-sdk "^*" + commander "^2.5.0" + dotenv "^0.4.0" + +aws-sdk@^*: + version "2.336.0" + resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.336.0.tgz#b15371aff3e30ba77b74968c086375594be897c9" + dependencies: + buffer "4.9.1" + events "1.1.1" + ieee754 "1.1.8" + jmespath "0.15.0" + querystring "0.2.0" + sax "1.2.1" + url "0.10.3" + uuid "3.1.0" + xml2js "0.4.19" + babel-cli@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.26.0.tgz#502ab54874d7db88ad00b887a06383ce03d002f1" @@ -953,6 +1045,10 @@ balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" +base64-js@^1.0.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" + base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -965,26 +1061,21 @@ base@^0.11.1: mixin-deep "^1.2.0" pascalcase "^0.1.1" +bcryptjs@^2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/bcryptjs/-/bcryptjs-2.4.3.tgz#9ab5627b93e60621ff7cdac5da9733027df1d0cb" + binary-extensions@^1.0.0: version "1.12.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" -body-parser@1.18.2: - version "1.18.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454" +body-parser-graphql@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/body-parser-graphql/-/body-parser-graphql-1.1.0.tgz#80a80353c7cb623562fd375750dfe018d75f0f7c" dependencies: - bytes "3.0.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.1" - http-errors "~1.6.2" - iconv-lite "0.4.19" - on-finished "~2.3.0" - qs "6.5.1" - raw-body "2.3.2" - type-is "~1.6.15" + body-parser "^1.18.2" -body-parser@^1.18.3: +body-parser@1.18.3, body-parser@^1.18.2, body-parser@^1.18.3: version "1.18.3" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" dependencies: @@ -1048,6 +1139,22 @@ browserslist@^3.2.6: caniuse-lite "^1.0.30000844" electron-to-chromium "^1.3.47" +buffer-equal-constant-time@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + +buffer@4.9.1: + version "4.9.1" + resolved "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + busboy@^0.2.14: version "0.2.14" resolved "https://registry.yarnpkg.com/busboy/-/busboy-0.2.14.tgz#6c2a622efcf47c57bbbe1e2a9c37ad36c7925453" @@ -1078,8 +1185,8 @@ camelcase@^4.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" caniuse-lite@^1.0.30000844: - version "1.0.30000889" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000889.tgz#53e266c83e725ad3bd2e4a3ea76d5031a8aa4c3e" + version "1.0.30000892" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000892.tgz#344d2b51ee3ff5977537da4aa449c90eec40b759" capture-stack-trace@^1.0.0: version "1.0.1" @@ -1179,9 +1286,9 @@ color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" -commander@^2.11.0: - version "2.18.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.18.0.tgz#2bf063ddee7c7891176981a2cc798e5754bc6970" +commander@^2.11.0, commander@^2.5.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" component-emitter@^1.2.1: version "1.2.1" @@ -1232,7 +1339,7 @@ copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" -core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.7: +core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.3, core-js@^2.5.7: version "2.5.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" @@ -1253,6 +1360,13 @@ create-error-class@^3.0.0: dependencies: capture-stack-trace "^1.0.0" +cross-fetch@2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-2.2.2.tgz#a47ff4f7fc712daba8f6a695a11c948440d45723" + dependencies: + node-fetch "2.1.2" + whatwg-fetch "2.0.4" + cross-spawn@^5.0.1: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" @@ -1272,8 +1386,8 @@ debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6. ms "2.0.0" debug@^3.1.0: - version "3.2.5" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.5.tgz#c2418fbfd7a29f4d4f70ff4cea604d4b64c46407" + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" dependencies: ms "^2.1.1" @@ -1314,11 +1428,7 @@ delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" -depd@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" - -depd@~1.1.1, depd@~1.1.2: +depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" @@ -1353,9 +1463,13 @@ dot-prop@^4.1.0: dependencies: is-obj "^1.0.0" +dotenv@^0.4.0: + version "0.4.0" + resolved "http://registry.npmjs.org/dotenv/-/dotenv-0.4.0.tgz#f6fb351363c2d92207245c737802c9ab5ae1495a" + dotenv@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.0.0.tgz#24e37c041741c5f4b25324958ebbc34bca965935" + version "6.1.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.1.0.tgz#9853b6ca98292acb7dec67a95018fa40bccff42c" duplexer3@^0.1.4: version "0.1.4" @@ -1365,13 +1479,19 @@ duplexer@^0.1.1, duplexer@~0.1.1: version "0.1.1" resolved "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" +ecdsa-sig-formatter@1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz#1c595000f04a8897dfb85000892a0f4c33af86c3" + dependencies: + safe-buffer "^5.0.1" + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" electron-to-chromium@^1.3.47: - version "1.3.73" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.73.tgz#aa67787067d58cc3920089368b3b8d6fe0fc12f6" + version "1.3.79" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.79.tgz#774718f06284a4bf8f578ac67e74508fe659f13a" encodeurl@~1.0.2: version "1.0.2" @@ -1403,6 +1523,10 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" @@ -1428,6 +1552,10 @@ eventemitter3@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" +events@1.1.1: + version "1.1.1" + resolved "http://registry.npmjs.org/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + execa@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" @@ -1464,13 +1592,13 @@ expand-range@^1.8.1: dependencies: fill-range "^2.1.0" -express@^4.0.0: - version "4.16.3" - resolved "http://registry.npmjs.org/express/-/express-4.16.3.tgz#6af8a502350db3246ecc4becf6b5a34d22f7ed53" +express@^4.0.0, express@^4.16.3: + version "4.16.4" + resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e" dependencies: accepts "~1.3.5" array-flatten "1.1.1" - body-parser "1.18.2" + body-parser "1.18.3" content-disposition "0.5.2" content-type "~1.0.4" cookie "0.3.1" @@ -1487,10 +1615,10 @@ express@^4.0.0: on-finished "~2.3.0" parseurl "~1.3.2" path-to-regexp "0.1.7" - proxy-addr "~2.0.3" - qs "6.5.1" + proxy-addr "~2.0.4" + qs "6.5.2" range-parser "~1.2.0" - safe-buffer "5.1.1" + safe-buffer "5.1.2" send "0.16.2" serve-static "1.13.2" setprototypeof "1.1.0" @@ -1579,8 +1707,8 @@ finalhandler@1.1.1: unpipe "~1.0.0" flatmap-stream@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/flatmap-stream/-/flatmap-stream-0.1.0.tgz#ed54e01422cd29281800914fcb968d58b685d5f1" + version "0.1.1" + resolved "https://registry.yarnpkg.com/flatmap-stream/-/flatmap-stream-0.1.1.tgz#d34f39ef3b9aa5a2fc225016bd3adf28ac5ae6ea" for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" @@ -1717,12 +1845,22 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" -graphql-anywhere@^4.1.0-alpha.0, graphql-anywhere@^4.1.19: +graphql-anywhere@^4.1.0-alpha.0: version "4.1.19" resolved "https://registry.yarnpkg.com/graphql-anywhere/-/graphql-anywhere-4.1.19.tgz#5f6ca3b58218e5449f4798e3c6d942fcd2fef082" dependencies: apollo-utilities "^1.0.21" +graphql-config@2.0.0: + version "2.0.0" + resolved "http://registry.npmjs.org/graphql-config/-/graphql-config-2.0.0.tgz#daf69091055c6f675d63893a2d14c48f3fec3327" + dependencies: + graphql-import "^0.4.0" + graphql-request "^1.4.0" + js-yaml "^3.10.0" + lodash "^4.17.4" + minimatch "^3.0.4" + graphql-custom-directives@^0.2.13: version "0.2.13" resolved "https://registry.yarnpkg.com/graphql-custom-directives/-/graphql-custom-directives-0.2.13.tgz#5e175069f5ff404f751d232e302007bc25488ea8" @@ -1731,17 +1869,76 @@ graphql-custom-directives@^0.2.13: moment "^2.22.2" numeral "^2.0.6" +graphql-deduplicator@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/graphql-deduplicator/-/graphql-deduplicator-2.0.1.tgz#20c6b39e3a6f096b46dfc8491432818739c0ee37" + +graphql-extensions@^0.0.x, graphql-extensions@~0.0.9: + version "0.0.10" + resolved "http://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.0.10.tgz#34bdb2546d43f6a5bc89ab23c295ec0466c6843d" + dependencies: + core-js "^2.5.3" + source-map-support "^0.5.1" + graphql-extensions@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/graphql-extensions/-/graphql-extensions-0.2.1.tgz#7697e0fcea2e622afe9e24dd31fc84f533e84c70" dependencies: apollo-server-env "^2.0.3" -graphql-middleware@^1.7.6: - version "1.7.6" - resolved "https://registry.yarnpkg.com/graphql-middleware/-/graphql-middleware-1.7.6.tgz#f226bf6671f3d82a9378f8b335804c8e44d21733" +graphql-import@^0.4.0: + version "0.4.5" + resolved "http://registry.npmjs.org/graphql-import/-/graphql-import-0.4.5.tgz#e2f18c28d335733f46df8e0733d8deb1c6e2a645" dependencies: - graphql-tools "^4.0.0" + lodash "^4.17.4" + +graphql-import@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/graphql-import/-/graphql-import-0.6.0.tgz#c00cb8a269ceea263e062922c8c81a2272d1ffcb" + dependencies: + lodash "^4.17.4" + +graphql-middleware@1.6.6: + version "1.6.6" + resolved "https://registry.yarnpkg.com/graphql-middleware/-/graphql-middleware-1.6.6.tgz#f40f4e836ced479df718dbc1869ea4cd3b64027b" + dependencies: + graphql-tools "^3.0.5" + +graphql-middleware@^1.7.6: + version "1.7.7" + resolved "https://registry.yarnpkg.com/graphql-middleware/-/graphql-middleware-1.7.7.tgz#0a7a7193a873c4769401df2aef4ffb9c6ca97f43" + dependencies: + graphql-tools "^4.0.1" + +graphql-playground-html@1.5.5: + version "1.5.5" + resolved "http://registry.npmjs.org/graphql-playground-html/-/graphql-playground-html-1.5.5.tgz#e2aca543eb66b435ead495b45244b2604d6b2d48" + dependencies: + graphql-config "2.0.0" + +graphql-playground-html@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/graphql-playground-html/-/graphql-playground-html-1.6.0.tgz#6ec4d54325ab2e5352506fdb89eb37c3fc718bf8" + dependencies: + graphql-config "2.0.0" + +graphql-playground-middleware-express@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/graphql-playground-middleware-express/-/graphql-playground-middleware-express-1.7.2.tgz#5f7bf3683494fe17893d1b54bbecee5e222c2e78" + dependencies: + graphql-playground-html "1.6.0" + +graphql-playground-middleware-lambda@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/graphql-playground-middleware-lambda/-/graphql-playground-middleware-lambda-1.6.1.tgz#e0f1944558136dd3975570c92c702d6009cc779c" + dependencies: + graphql-playground-html "1.5.5" + +graphql-request@^1.4.0: + version "1.8.2" + resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-1.8.2.tgz#398d10ae15c585676741bde3fc01d5ca948f8fbe" + dependencies: + cross-fetch "2.2.2" graphql-subscriptions@^0.5.8: version "0.5.8" @@ -1753,7 +1950,7 @@ graphql-tag@^2.4.2, graphql-tag@^2.9.2: version "2.10.0" resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.10.0.tgz#87da024be863e357551b2b8700e496ee2d4353ae" -graphql-tools@^3.0.4: +graphql-tools@^3.0.0, graphql-tools@^3.0.4, graphql-tools@^3.0.5: version "3.1.1" resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-3.1.1.tgz#d593358f01e7c8b1671a17b70ddb034dea9dbc50" dependencies: @@ -1763,9 +1960,9 @@ graphql-tools@^3.0.4: iterall "^1.1.3" uuid "^3.1.0" -graphql-tools@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-4.0.0.tgz#6ea01937c6f947212f83567ba687e97c22fdd2a6" +graphql-tools@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-4.0.1.tgz#c995a4e25c2967d108c975e508322d12969c8c0e" dependencies: apollo-link "^1.2.3" apollo-utilities "^1.0.1" @@ -1773,7 +1970,33 @@ graphql-tools@^4.0.0: iterall "^1.1.3" uuid "^3.1.0" -graphql@^0.13.2: +graphql-yoga@^1.16.2: + version "1.16.2" + resolved "https://registry.yarnpkg.com/graphql-yoga/-/graphql-yoga-1.16.2.tgz#083293a9cecab6283e883c5a482c5c920fa66585" + dependencies: + "@types/cors" "^2.8.4" + "@types/express" "^4.11.1" + "@types/graphql" "^0.13.0" + "@types/graphql-deduplicator" "^2.0.0" + "@types/zen-observable" "^0.5.3" + apollo-server-express "^1.3.6" + apollo-server-lambda "1.3.6" + apollo-upload-server "^5.0.0" + aws-lambda "^0.1.2" + body-parser-graphql "1.1.0" + cors "^2.8.4" + express "^4.16.3" + graphql "^0.11.0 || ^0.12.0 || ^0.13.0" + graphql-deduplicator "^2.0.1" + graphql-import "^0.6.0" + graphql-middleware "1.6.6" + graphql-playground-middleware-express "1.7.2" + graphql-playground-middleware-lambda "1.6.1" + graphql-subscriptions "^0.5.8" + graphql-tools "^3.0.0" + subscriptions-transport-ws "^0.9.8" + +"graphql@^0.11.0 || ^0.12.0 || ^0.13.0", graphql@^0.13.2: version "0.13.2" resolved "http://registry.npmjs.org/graphql/-/graphql-0.13.2.tgz#4c740ae3c222823e7004096f832e7b93b2108270" dependencies: @@ -1848,15 +2071,6 @@ home-or-tmp@^2.0.0: os-homedir "^1.0.0" os-tmpdir "^1.0.1" -http-errors@1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" - dependencies: - depd "1.1.1" - inherits "2.0.3" - setprototypeof "1.0.3" - statuses ">= 1.3.1 < 2" - http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: version "1.6.3" resolved "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" @@ -1866,10 +2080,6 @@ http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: setprototypeof "1.1.0" statuses ">= 1.4.0 < 2" -iconv-lite@0.4.19: - version "0.4.19" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" - iconv-lite@0.4.23: version "0.4.23" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" @@ -1882,6 +2092,14 @@ iconv-lite@^0.4.4: dependencies: safer-buffer ">= 2.1.2 < 3" +ieee754@1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" + +ieee754@^1.1.4: + version "1.1.12" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b" + ignore-by-default@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" @@ -1892,6 +2110,10 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" +immutable-tuple@^0.4.4: + version "0.4.8" + resolved "https://registry.yarnpkg.com/immutable-tuple/-/immutable-tuple-0.4.8.tgz#f60b65b863d34be39d307d1bbf4a450e1ac3048a" + import-lazy@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" @@ -2141,7 +2363,7 @@ isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" -isarray@1.0.0, isarray@~1.0.0: +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -2163,6 +2385,10 @@ iterall@^1.1.3, iterall@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.2.2.tgz#92d70deb8028e0c39ff3164fdbf4d8b088130cd7" +jmespath@0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217" + "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" @@ -2171,6 +2397,13 @@ js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" +js-yaml@^3.10.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" @@ -2183,6 +2416,35 @@ json5@^0.5.1: version "0.5.1" resolved "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" +jsonwebtoken@^8.2.0, jsonwebtoken@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.3.0.tgz#056c90eee9a65ed6e6c72ddb0a1d325109aaf643" + dependencies: + jws "^3.1.5" + lodash.includes "^4.3.0" + lodash.isboolean "^3.0.3" + lodash.isinteger "^4.0.4" + lodash.isnumber "^3.0.3" + lodash.isplainobject "^4.0.6" + lodash.isstring "^4.0.1" + lodash.once "^4.0.0" + ms "^2.1.1" + +jwa@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.1.6.tgz#87240e76c9808dbde18783cf2264ef4929ee50e6" + dependencies: + buffer-equal-constant-time "1.0.1" + ecdsa-sig-formatter "1.0.10" + safe-buffer "^5.0.1" + +jws@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/jws/-/jws-3.1.5.tgz#80d12d05b293d1e841e7cb8b4e69e561adcf834f" + dependencies: + jwa "^1.1.5" + safe-buffer "^5.0.1" + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -2213,7 +2475,35 @@ lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" -lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5: +lodash.includes@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" + +lodash.isboolean@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" + +lodash.isinteger@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" + +lodash.isnumber@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + +lodash.isstring@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + +lodash.once@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" + +lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" @@ -2350,8 +2640,8 @@ minipass@^2.2.1, minipass@^2.3.3: yallist "^3.0.0" minizlib@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb" + version "1.1.1" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.1.tgz#6734acc045a46e61d596a43bb9d9cd326e19cc42" dependencies: minipass "^2.2.1" @@ -2420,13 +2710,17 @@ neo4j-driver@^1.6.1: uri-js "^4.2.1" neo4j-graphql-js@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/neo4j-graphql-js/-/neo4j-graphql-js-1.0.2.tgz#e4dd66b85e817347efb13beaa8340f8eda9df24f" + version "1.0.4" + resolved "https://registry.yarnpkg.com/neo4j-graphql-js/-/neo4j-graphql-js-1.0.4.tgz#250bd44024f1505c726d2fc4ab27a35a1fc5330b" dependencies: graphql "^0.13.2" lodash "^4.17.10" neo4j-driver "^1.6.1" +node-fetch@2.1.2: + version "2.1.2" + resolved "http://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz#ab884e8e7e57e38a944753cec706f788d1768bb5" + node-fetch@^2.1.2: version "2.2.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.2.0.tgz#4ee79bde909262f9775f731e3656d0db55ced5b5" @@ -2446,7 +2740,7 @@ node-pre-gyp@^0.10.0: semver "^5.3.0" tar "^4" -nodemon@^1.17.5: +nodemon@^1.18.4: version "1.18.4" resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.18.4.tgz#873f65fdb53220eb166180cf106b1354ac5d714d" dependencies: @@ -2485,8 +2779,8 @@ npm-bundled@^1.0.1: resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" npm-packlist@^1.1.6: - version "1.1.11" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.11.tgz#84e8c683cbe7867d34b1d357d893ce29e28a02de" + version "1.1.12" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.12.tgz#22bde2ebc12e72ca482abd67afc51eb49377243a" dependencies: ignore-walk "^3.0.1" npm-bundled "^1.0.1" @@ -2572,6 +2866,12 @@ once@^1.3.0: dependencies: wrappy "1" +optimism@^0.6.6: + version "0.6.6" + resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.6.6.tgz#5415b2d6a2f8b3745aedb9f97fdf4e52467ecd84" + dependencies: + immutable-tuple "^0.4.4" + os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" @@ -2625,6 +2925,24 @@ pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" +passport-jwt@^4.0.0: + version "4.0.0" + resolved "http://registry.npmjs.org/passport-jwt/-/passport-jwt-4.0.0.tgz#7f0be7ba942e28b9f5d22c2ebbb8ce96ef7cf065" + dependencies: + jsonwebtoken "^8.2.0" + passport-strategy "^1.0.0" + +passport-strategy@1.x.x, passport-strategy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/passport-strategy/-/passport-strategy-1.0.0.tgz#b5539aa8fc225a3d1ad179476ddf236b440f52e4" + +passport@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/passport/-/passport-0.4.0.tgz#c5095691347bd5ad3b5e180238c3914d16f05811" + dependencies: + passport-strategy "1.x.x" + pause "0.0.1" + path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" @@ -2651,6 +2969,10 @@ pause-stream@^0.0.11: dependencies: through "~2.3" +pause@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/pause/-/pause-0.0.1.tgz#1d408b3fdb76923b9543d96fb4c9dfd535d9cb5d" + pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" @@ -2693,7 +3015,7 @@ protobufjs@^6.8.6: "@types/node" "^10.1.0" long "^4.0.0" -proxy-addr@~2.0.3: +proxy-addr@~2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93" dependencies: @@ -2716,18 +3038,22 @@ pstree.remy@^1.1.0: dependencies: ps-tree "^1.1.0" +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" -qs@6.5.1: - version "6.5.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" - qs@6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + randomatic@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.0.tgz#36f2ca708e9e567f5ed2ec01949026d50aa10116" @@ -2740,15 +3066,6 @@ range-parser@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" -raw-body@2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89" - dependencies: - bytes "3.0.0" - http-errors "1.6.2" - iconv-lite "0.4.19" - unpipe "1.0.0" - raw-body@2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" @@ -2900,11 +3217,7 @@ rimraf@^2.6.1: dependencies: glob "^7.0.5" -safe-buffer@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" - -safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -2918,7 +3231,11 @@ safe-regex@^1.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" -sax@^1.2.4: +sax@1.2.1: + version "1.2.1" + resolved "http://registry.npmjs.org/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" + +sax@>=0.6.0, sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" @@ -2929,8 +3246,8 @@ semver-diff@^2.0.0: semver "^5.0.3" semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.5.0: - version "5.5.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477" + version "5.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" send@0.16.2: version "0.16.2" @@ -2981,10 +3298,6 @@ set-value@^2.0.0: is-plain-object "^2.0.3" split-string "^3.0.1" -setprototypeof@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" - setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" @@ -3009,7 +3322,7 @@ slash@^1.0.0: slug@^0.9.1: version "0.9.1" - resolved "https://registry.yarnpkg.com/slug/-/slug-0.9.1.tgz#af08f608a7c11516b61778aa800dce84c518cfda" + resolved "http://registry.npmjs.org/slug/-/slug-0.9.1.tgz#af08f608a7c11516b61778aa800dce84c518cfda" dependencies: unicode ">= 0.3.1" @@ -3056,6 +3369,13 @@ source-map-support@^0.4.15: dependencies: source-map "^0.5.6" +source-map-support@^0.5.1: + version "0.5.9" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" @@ -3064,6 +3384,10 @@ source-map@^0.5.6, source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" @@ -3076,6 +3400,10 @@ split@^1.0.1: dependencies: through "2" +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -3083,7 +3411,7 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -"statuses@>= 1.3.1 < 2", "statuses@>= 1.4.0 < 2": +"statuses@>= 1.4.0 < 2": version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" @@ -3147,7 +3475,7 @@ strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" -subscriptions-transport-ws@^0.9.11: +subscriptions-transport-ws@^0.9.11, subscriptions-transport-ws@^0.9.8: version "0.9.15" resolved "https://registry.yarnpkg.com/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.15.tgz#68a8b7ba0037d8c489fb2f5a102d1494db297d0d" dependencies: @@ -3245,7 +3573,7 @@ trunc-text@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trunc-text/-/trunc-text-1.0.1.tgz#58f876d8ac59b224b79834bb478b8656e69622b5" -type-is@^1.6.16, type-is@~1.6.15, type-is@~1.6.16: +type-is@^1.6.16, type-is@~1.6.16: version "1.6.16" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" dependencies: @@ -3327,6 +3655,13 @@ url-parse-lax@^1.0.0: dependencies: prepend-http "^1.0.1" +url@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/url/-/url-0.10.3.tgz#021e4d9c7705f21bbf37d03ceb58767402774c64" + dependencies: + punycode "1.3.2" + querystring "0.2.0" + use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" @@ -3350,6 +3685,10 @@ utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" +uuid@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" + uuid@^3.1.0: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" @@ -3364,6 +3703,10 @@ vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" +whatwg-fetch@2.0.4: + version "2.0.4" + resolved "http://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" + which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -3377,8 +3720,8 @@ wide-align@^1.1.0: string-width "^1.0.2 || 2" widest-line@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.0.tgz#0142a4e8a243f8882c0233aa0e0281aa76152273" + version "2.0.1" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" dependencies: string-width "^2.1.1" @@ -3404,6 +3747,17 @@ xdg-basedir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" +xml2js@0.4.19: + version "0.4.19" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" + dependencies: + sax ">=0.6.0" + xmlbuilder "~9.0.1" + +xmlbuilder@~9.0.1: + version "9.0.7" + resolved "http://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" + yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"