├── .github └── FUNDING.yml ├── .gitignore ├── LICENSE ├── README.md ├── client ├── README.md ├── dist │ └── main.js ├── index.html ├── package-lock.json ├── package.json └── src │ └── index.js └── server ├── README.md ├── from-rest └── index.js ├── package-lock.json ├── package.json ├── resolvers.js ├── schema.js ├── server.js └── users.json /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: time-to-hack 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 13 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Runtime data 9 | pids 10 | *.pid 11 | *.seed 12 | *.pid.lock 13 | 14 | # Directory for instrumented libs generated by jscoverage/JSCover 15 | lib-cov 16 | 17 | # Coverage directory used by tools like istanbul 18 | coverage 19 | 20 | # nyc test coverage 21 | .nyc_output 22 | 23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 24 | .grunt 25 | 26 | # Bower dependency directory (https://bower.io/) 27 | bower_components 28 | 29 | # node-waf configuration 30 | .lock-wscript 31 | 32 | # Compiled binary addons (http://nodejs.org/api/addons.html) 33 | build/Release 34 | 35 | # Dependency directories 36 | node_modules/ 37 | jspm_packages/ 38 | 39 | # Typescript v1 declaration files 40 | typings/ 41 | 42 | # Optional npm cache directory 43 | .npm 44 | 45 | # Optional eslint cache 46 | .eslintcache 47 | 48 | # Optional REPL history 49 | .node_repl_history 50 | 51 | # Output of 'npm pack' 52 | *.tgz 53 | 54 | # Yarn Integrity file 55 | .yarn-integrity 56 | 57 | # dotenv environment variables file 58 | .env 59 | 60 | .DS_Store 61 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Time to Hack 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # graphql-demo 2 | 3 | [![HitCount](http://hits.dwyl.io/time2hack/graphql-demo.svg)](http://hits.dwyl.io/time2hack/graphql-demo) 4 | 5 | GraphQL is an API query language. It provides a runtime to describe and query the data, no matter what the storage engine is. 6 | 7 | GraphQL's benefits include 8 | 9 | Typed data 10 | Get what you asked for 11 | Multiple data requests in one call 12 | One endpoint, changes in API are now bit easier 13 | Subscriptions 14 | etc. 15 | For example, consider a system similar to a social network where we have users and they have other users as friends. Following entity will completely encapsulate the data model; how it is going to be dealt in Back End and Front End, we will see after that. 16 | ```graphql 17 | type User { 18 | id: String! 19 | fullName: String 20 | name: Name 21 | email: String! 22 | friends: [User] 23 | } 24 | type Name { 25 | first: String 26 | last: String 27 | } 28 | ``` 29 | For this data description, the front end will sent the request to data as follows: 30 | ```graphql 31 | { 32 | user(id: "5a826fdf9856ad6503d728d5") { 33 | id 34 | name { 35 | first 36 | last 37 | } 38 | email 39 | friends { 40 | id 41 | email 42 | } 43 | } 44 | } 45 | ``` 46 | And will receive the response as follows: 47 | ```json 48 | { 49 | "data": { 50 | "user": { 51 | "id": "5a826fdf9856ad6503d728d5", 52 | "name": { 53 | "first": "Stanton", 54 | "last": "Hansen" 55 | }, 56 | "email": "stanton.hansen@example.com", 57 | "friends": [ 58 | { 59 | "id": "5a826fdf0d054a6fab7bb067", 60 | "email": "barr.wolf@example.com" 61 | }, 62 | ... 63 | { 64 | "id": "5a826fdf0d054a6fab7bb067", 65 | "email": "barr.wolf@example.com" 66 | } 67 | ] 68 | } 69 | } 70 | } 71 | ``` 72 | And the good part is that the data can be from any interface, be it the RDBMS, NoSQL DB, a File or even in-memory operation. 73 | 74 | [Read how to use Server](./server/README.md) 75 | 76 | [Read how to use Client](./client/README.md) 77 | 78 | Read full post at https://time2hack.com/2018/02/introduction-quick-guide-to-graphql-for-backend-frontend/ 79 | -------------------------------------------------------------------------------- /client/README.md: -------------------------------------------------------------------------------- 1 | # graphql-demo: Front End Client 2 | 3 | ### dependencies 4 | 5 | ``` 6 | npm i -D webpack@next webpack-cli 7 | 8 | npm i -S graphql graphql-tag apollo-cache-inmemory apollo-client apollo-link-http 9 | ``` 10 | 11 | ### Compiling 12 | 13 | ``` 14 | npm run build 15 | ``` 16 | or 17 | ``` 18 | npm run start 19 | ``` 20 | 21 | Use [`http-server`](https://www.npmjs.com/package/http-server) to serve files 22 | 23 | ----- 24 | 25 | Read full post at https://time2hack.com/2018/02/introduction-quick-guide-to-graphql-for-backend-frontend/ 26 | -------------------------------------------------------------------------------- /client/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | GraphQL Demo: Time to Hack 7 | 8 | 9 | 28 | 29 | 30 |
31 | 32 | 33 | -------------------------------------------------------------------------------- /client/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@graphql-demo/client", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "build": "webpack --mode=production", 8 | "start": "webpack --mode=development --watch" 9 | }, 10 | "keywords": [], 11 | "author": "Pankaj Patel", 12 | "license": "ISC", 13 | "devDependencies": { 14 | "webpack": "^5.75.0", 15 | "webpack-cli": "^5.0.1", 16 | "webpack-dev-server": "^4.11.1" 17 | }, 18 | "dependencies": { 19 | "apollo-cache-inmemory": "^1.1.7", 20 | "apollo-client": "^2.2.3", 21 | "apollo-link-http": "^1.3.3", 22 | "graphql": "^0.13.0", 23 | "graphql-tag": "^2.7.3" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /client/src/index.js: -------------------------------------------------------------------------------- 1 | import { ApolloClient } from 'apollo-client'; 2 | import { HttpLink } from 'apollo-link-http'; 3 | import { InMemoryCache } from 'apollo-cache-inmemory'; 4 | import gql from 'graphql-tag'; 5 | 6 | const client = new ApolloClient({ 7 | link: new HttpLink({ uri: 'http://localhost:3000/graphql' }), 8 | cache: new InMemoryCache() 9 | }); 10 | 11 | client.query({ 12 | query: gql` 13 | query users { 14 | users { 15 | id 16 | fullName 17 | email 18 | } 19 | } 20 | `, 21 | }) 22 | .then(({data}) => appendData(data)) 23 | .catch(error => console.error(error)); 24 | 25 | const appendData = (data) => { 26 | console.log(data); 27 | const app = document.querySelector('#app'); 28 | app.innerHTML = ''; 29 | data.users.map(user => { 30 | const d = document.createElement('div'); 31 | d.innerHTML = `
32 |

${user.fullName}

33 |

${user.email}

34 |
`; 35 | app.appendChild(d.firstElementChild); 36 | }) 37 | } 38 | -------------------------------------------------------------------------------- /server/README.md: -------------------------------------------------------------------------------- 1 | # graphql-demo: Server 2 | 3 | ### dependencies 4 | 5 | ``` 6 | npm i -S apollo-server-express body-parser cors express graphql graphql-tools node-fetch uuid 7 | ``` 8 | 9 | ### Compiling 10 | 11 | ``` 12 | npm run start 13 | ``` 14 | 15 | For the REST wraper 16 | ``` 17 | npm run start:rest 18 | ``` 19 | 20 | Go to http://localhost:3000/graphiql to see GraphiQL 21 | 22 | ----- 23 | 24 | Read full post at https://time2hack.com/2018/02/introduction-quick-guide-to-graphql-for-backend-frontend/ 25 | -------------------------------------------------------------------------------- /server/from-rest/index.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const bodyParser = require('body-parser'); 3 | const { graphqlExpress, graphiqlExpress } = require('apollo-server-express'); 4 | const { makeExecutableSchema } = require('graphql-tools'); 5 | const fetch = require('node-fetch'); 6 | 7 | const typeDefs = ` 8 | type Post { 9 | id: Int! 10 | userId: Int 11 | title: String 12 | body: String 13 | } 14 | type Query { 15 | posts: [Post] 16 | } 17 | `; 18 | const resolvers = { 19 | Query: { 20 | posts: async () => fetch('https://jsonplaceholder.typicode.com/posts') 21 | .then(response => response.json()) 22 | } 23 | } 24 | 25 | // Put together a schema 26 | const schema = makeExecutableSchema({ 27 | typeDefs, 28 | resolvers, 29 | }); 30 | 31 | // Initialize the app 32 | const app = express(); 33 | 34 | // The GraphQL endpoint 35 | app.use('/graphql', bodyParser.json(), graphqlExpress({ schema })); 36 | 37 | // GraphiQL, a visual editor for queries 38 | app.use('/graphiql', graphiqlExpress({ endpointURL: '/graphql' })); 39 | 40 | // Start the server 41 | app.listen(3000, () => { 42 | console.log('Go to http://localhost:3000/graphiql to run queries!'); 43 | }); 44 | -------------------------------------------------------------------------------- /server/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@graphql-demo/server", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@apollo/protobufjs": { 8 | "version": "1.0.4", 9 | "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.0.4.tgz", 10 | "integrity": "sha512-EE3zx+/D/wur/JiLp6VCiw1iYdyy1lCJMf8CGPkLeDt5QJrN4N8tKFx33Ah4V30AUQzMk7Uz4IXKZ1LOj124gA==", 11 | "requires": { 12 | "@protobufjs/aspromise": "^1.1.2", 13 | "@protobufjs/base64": "^1.1.2", 14 | "@protobufjs/codegen": "^2.0.4", 15 | "@protobufjs/eventemitter": "^1.1.0", 16 | "@protobufjs/fetch": "^1.1.0", 17 | "@protobufjs/float": "^1.0.2", 18 | "@protobufjs/inquire": "^1.1.0", 19 | "@protobufjs/path": "^1.1.2", 20 | "@protobufjs/pool": "^1.1.0", 21 | "@protobufjs/utf8": "^1.1.0", 22 | "@types/long": "^4.0.0", 23 | "@types/node": "^10.1.0", 24 | "long": "^4.0.0" 25 | }, 26 | "dependencies": { 27 | "@types/node": { 28 | "version": "10.17.28", 29 | "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.28.tgz", 30 | "integrity": "sha512-dzjES1Egb4c1a89C7lKwQh8pwjYmlOAG9dW1pBgxEk57tMrLnssOfEthz8kdkNaBd7lIqQx7APm5+mZ619IiCQ==" 31 | } 32 | } 33 | }, 34 | "@apollographql/apollo-tools": { 35 | "version": "0.4.8", 36 | "resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.4.8.tgz", 37 | "integrity": "sha512-W2+HB8Y7ifowcf3YyPHgDI05izyRtOeZ4MqIr7LbTArtmJ0ZHULWpn84SGMW7NAvTV1tFExpHlveHhnXuJfuGA==", 38 | "requires": { 39 | "apollo-env": "^0.6.5" 40 | } 41 | }, 42 | "@apollographql/graphql-playground-html": { 43 | "version": "1.6.24", 44 | "resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.24.tgz", 45 | "integrity": "sha512-8GqG48m1XqyXh4mIZrtB5xOhUwSsh1WsrrsaZQOEYYql3YN9DEu9OOSg0ILzXHZo/h2Q74777YE4YzlArQzQEQ==" 46 | }, 47 | "@protobufjs/aspromise": { 48 | "version": "1.1.2", 49 | "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", 50 | "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=" 51 | }, 52 | "@protobufjs/base64": { 53 | "version": "1.1.2", 54 | "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", 55 | "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" 56 | }, 57 | "@protobufjs/codegen": { 58 | "version": "2.0.4", 59 | "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", 60 | "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" 61 | }, 62 | "@protobufjs/eventemitter": { 63 | "version": "1.1.0", 64 | "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", 65 | "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=" 66 | }, 67 | "@protobufjs/fetch": { 68 | "version": "1.1.0", 69 | "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", 70 | "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", 71 | "requires": { 72 | "@protobufjs/aspromise": "^1.1.1", 73 | "@protobufjs/inquire": "^1.1.0" 74 | } 75 | }, 76 | "@protobufjs/float": { 77 | "version": "1.0.2", 78 | "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", 79 | "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=" 80 | }, 81 | "@protobufjs/inquire": { 82 | "version": "1.1.0", 83 | "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", 84 | "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=" 85 | }, 86 | "@protobufjs/path": { 87 | "version": "1.1.2", 88 | "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", 89 | "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=" 90 | }, 91 | "@protobufjs/pool": { 92 | "version": "1.1.0", 93 | "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", 94 | "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=" 95 | }, 96 | "@protobufjs/utf8": { 97 | "version": "1.1.0", 98 | "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", 99 | "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" 100 | }, 101 | "@types/accepts": { 102 | "version": "1.3.5", 103 | "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", 104 | "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", 105 | "requires": { 106 | "@types/node": "*" 107 | } 108 | }, 109 | "@types/body-parser": { 110 | "version": "1.19.0", 111 | "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", 112 | "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", 113 | "requires": { 114 | "@types/connect": "*", 115 | "@types/node": "*" 116 | } 117 | }, 118 | "@types/connect": { 119 | "version": "3.4.33", 120 | "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz", 121 | "integrity": "sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==", 122 | "requires": { 123 | "@types/node": "*" 124 | } 125 | }, 126 | "@types/content-disposition": { 127 | "version": "0.5.3", 128 | "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.3.tgz", 129 | "integrity": "sha512-P1bffQfhD3O4LW0ioENXUhZ9OIa0Zn+P7M+pWgkCKaT53wVLSq0mrKksCID/FGHpFhRSxRGhgrQmfhRuzwtKdg==" 130 | }, 131 | "@types/cookies": { 132 | "version": "0.7.4", 133 | "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.4.tgz", 134 | "integrity": "sha512-oTGtMzZZAVuEjTwCjIh8T8FrC8n/uwy+PG0yTvQcdZ7etoel7C7/3MSd7qrukENTgQtotG7gvBlBojuVs7X5rw==", 135 | "requires": { 136 | "@types/connect": "*", 137 | "@types/express": "*", 138 | "@types/keygrip": "*", 139 | "@types/node": "*" 140 | } 141 | }, 142 | "@types/cors": { 143 | "version": "2.8.7", 144 | "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.7.tgz", 145 | "integrity": "sha512-sOdDRU3oRS7LBNTIqwDkPJyq0lpHYcbMTt0TrjzsXbk/e37hcLTH6eZX7CdbDeN0yJJvzw9hFBZkbtCSbk/jAQ==", 146 | "requires": { 147 | "@types/express": "*" 148 | } 149 | }, 150 | "@types/express": { 151 | "version": "4.17.4", 152 | "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.4.tgz", 153 | "integrity": "sha512-DO1L53rGqIDUEvOjJKmbMEQ5Z+BM2cIEPy/eV3En+s166Gz+FeuzRerxcab757u/U4v4XF4RYrZPmqKa+aY/2w==", 154 | "requires": { 155 | "@types/body-parser": "*", 156 | "@types/express-serve-static-core": "*", 157 | "@types/qs": "*", 158 | "@types/serve-static": "*" 159 | } 160 | }, 161 | "@types/express-serve-static-core": { 162 | "version": "4.17.9", 163 | "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.9.tgz", 164 | "integrity": "sha512-DG0BYg6yO+ePW+XoDENYz8zhNGC3jDDEpComMYn7WJc4mY1Us8Rw9ax2YhJXxpyk2SF47PQAoQ0YyVT1a0bEkA==", 165 | "requires": { 166 | "@types/node": "*", 167 | "@types/qs": "*", 168 | "@types/range-parser": "*" 169 | } 170 | }, 171 | "@types/fs-capacitor": { 172 | "version": "2.0.0", 173 | "resolved": "https://registry.npmjs.org/@types/fs-capacitor/-/fs-capacitor-2.0.0.tgz", 174 | "integrity": "sha512-FKVPOCFbhCvZxpVAMhdBdTfVfXUpsh15wFHgqOKxh9N9vzWZVuWCSijZ5T4U34XYNnuj2oduh6xcs1i+LPI+BQ==", 175 | "requires": { 176 | "@types/node": "*" 177 | } 178 | }, 179 | "@types/graphql-upload": { 180 | "version": "8.0.3", 181 | "resolved": "https://registry.npmjs.org/@types/graphql-upload/-/graphql-upload-8.0.3.tgz", 182 | "integrity": "sha512-hmLg9pCU/GmxBscg8GCr1vmSoEmbItNNxdD5YH2TJkXm//8atjwuprB+xJBK714JG1dkxbbhp5RHX+Pz1KsCMA==", 183 | "requires": { 184 | "@types/express": "*", 185 | "@types/fs-capacitor": "*", 186 | "@types/koa": "*", 187 | "graphql": "^14.5.3" 188 | }, 189 | "dependencies": { 190 | "graphql": { 191 | "version": "14.7.0", 192 | "resolved": "https://registry.npmjs.org/graphql/-/graphql-14.7.0.tgz", 193 | "integrity": "sha512-l0xWZpoPKpppFzMfvVyFmp9vLN7w/ZZJPefUicMCepfJeQ8sMcztloGYY9DfjVPo6tIUDzU5Hw3MUbIjj9AVVA==", 194 | "requires": { 195 | "iterall": "^1.2.2" 196 | } 197 | }, 198 | "iterall": { 199 | "version": "1.3.0", 200 | "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", 201 | "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==" 202 | } 203 | } 204 | }, 205 | "@types/http-assert": { 206 | "version": "1.5.1", 207 | "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.1.tgz", 208 | "integrity": "sha512-PGAK759pxyfXE78NbKxyfRcWYA/KwW17X290cNev/qAsn9eQIxkH4shoNBafH37wewhDG/0p1cHPbK6+SzZjWQ==" 209 | }, 210 | "@types/keygrip": { 211 | "version": "1.0.2", 212 | "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz", 213 | "integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==" 214 | }, 215 | "@types/koa": { 216 | "version": "2.11.3", 217 | "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.11.3.tgz", 218 | "integrity": "sha512-ABxVkrNWa4O/Jp24EYI/hRNqEVRlhB9g09p48neQp4m3xL1TJtdWk2NyNQSMCU45ejeELMQZBYyfstyVvO2H3Q==", 219 | "requires": { 220 | "@types/accepts": "*", 221 | "@types/content-disposition": "*", 222 | "@types/cookies": "*", 223 | "@types/http-assert": "*", 224 | "@types/keygrip": "*", 225 | "@types/koa-compose": "*", 226 | "@types/node": "*" 227 | } 228 | }, 229 | "@types/koa-compose": { 230 | "version": "3.2.5", 231 | "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz", 232 | "integrity": "sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==", 233 | "requires": { 234 | "@types/koa": "*" 235 | } 236 | }, 237 | "@types/long": { 238 | "version": "4.0.1", 239 | "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", 240 | "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==" 241 | }, 242 | "@types/mime": { 243 | "version": "2.0.3", 244 | "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.3.tgz", 245 | "integrity": "sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q==" 246 | }, 247 | "@types/node": { 248 | "version": "14.0.27", 249 | "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.27.tgz", 250 | "integrity": "sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g==" 251 | }, 252 | "@types/node-fetch": { 253 | "version": "2.5.7", 254 | "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.7.tgz", 255 | "integrity": "sha512-o2WVNf5UhWRkxlf6eq+jMZDu7kjgpgJfl4xVNlvryc95O/6F2ld8ztKX+qu+Rjyet93WAWm5LjeX9H5FGkODvw==", 256 | "requires": { 257 | "@types/node": "*", 258 | "form-data": "^3.0.0" 259 | } 260 | }, 261 | "@types/qs": { 262 | "version": "6.9.4", 263 | "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.4.tgz", 264 | "integrity": "sha512-+wYo+L6ZF6BMoEjtf8zB2esQsqdV6WsjRK/GP9WOgLPrq87PbNWgIxS76dS5uvl/QXtHGakZmwTznIfcPXcKlQ==" 265 | }, 266 | "@types/range-parser": { 267 | "version": "1.2.3", 268 | "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", 269 | "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" 270 | }, 271 | "@types/serve-static": { 272 | "version": "1.13.5", 273 | "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.5.tgz", 274 | "integrity": "sha512-6M64P58N+OXjU432WoLLBQxbA0LRGBCRm7aAGQJ+SMC1IMl0dgRVi9EFfoDcS2a7Xogygk/eGN94CfwU9UF7UQ==", 275 | "requires": { 276 | "@types/express-serve-static-core": "*", 277 | "@types/mime": "*" 278 | } 279 | }, 280 | "@types/ws": { 281 | "version": "7.2.6", 282 | "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.2.6.tgz", 283 | "integrity": "sha512-Q07IrQUSNpr+cXU4E4LtkSIBPie5GLZyyMC1QtQYRLWz701+XcoVygGUZgvLqElq1nU4ICldMYPnexlBsg3dqQ==", 284 | "requires": { 285 | "@types/node": "*" 286 | } 287 | }, 288 | "@types/zen-observable": { 289 | "version": "0.5.3", 290 | "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.5.3.tgz", 291 | "integrity": "sha512-aDvGDAHcVfUqNmd8q4//cHAP+HGxsbChbBbuk3+kMVk5TTxfWLpQWvVN3+UPjohLnwMYN7jr6BWNn2cYNqdm7g==" 292 | }, 293 | "@wry/equality": { 294 | "version": "0.1.11", 295 | "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.1.11.tgz", 296 | "integrity": "sha512-mwEVBDUVODlsQQ5dfuLUS5/Tf7jqUKyhKYHmVi4fPB6bDMOfWvUPJmKgS1Z7Za/sOI3vzWt4+O7yCiL/70MogA==", 297 | "requires": { 298 | "tslib": "^1.9.3" 299 | } 300 | }, 301 | "accepts": { 302 | "version": "1.3.8", 303 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 304 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", 305 | "requires": { 306 | "mime-types": "~2.1.34", 307 | "negotiator": "0.6.3" 308 | }, 309 | "dependencies": { 310 | "mime-db": { 311 | "version": "1.52.0", 312 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 313 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" 314 | }, 315 | "mime-types": { 316 | "version": "2.1.35", 317 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 318 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 319 | "requires": { 320 | "mime-db": "1.52.0" 321 | } 322 | } 323 | } 324 | }, 325 | "apollo-cache-control": { 326 | "version": "0.11.1", 327 | "resolved": "https://registry.npmjs.org/apollo-cache-control/-/apollo-cache-control-0.11.1.tgz", 328 | "integrity": "sha512-6iHa8TkcKt4rx5SKRzDNjUIpCQX+7/FlZwD7vRh9JDnM4VH8SWhpj8fUR3CiEY8Kuc4ChXnOY8bCcMju5KPnIQ==", 329 | "requires": { 330 | "apollo-server-env": "^2.4.5", 331 | "apollo-server-plugin-base": "^0.9.1" 332 | } 333 | }, 334 | "apollo-datasource": { 335 | "version": "0.7.2", 336 | "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-0.7.2.tgz", 337 | "integrity": "sha512-ibnW+s4BMp4K2AgzLEtvzkjg7dJgCaw9M5b5N0YKNmeRZRnl/I/qBTQae648FsRKgMwTbRQIvBhQ0URUFAqFOw==", 338 | "requires": { 339 | "apollo-server-caching": "^0.5.2", 340 | "apollo-server-env": "^2.4.5" 341 | } 342 | }, 343 | "apollo-engine-reporting": { 344 | "version": "2.3.0", 345 | "resolved": "https://registry.npmjs.org/apollo-engine-reporting/-/apollo-engine-reporting-2.3.0.tgz", 346 | "integrity": "sha512-SbcPLFuUZcRqDEZ6mSs8uHM9Ftr8yyt2IEu0JA8c3LNBmYXSLM7MHqFe80SVcosYSTBgtMz8mLJO8orhYoSYZw==", 347 | "requires": { 348 | "apollo-engine-reporting-protobuf": "^0.5.2", 349 | "apollo-graphql": "^0.5.0", 350 | "apollo-server-caching": "^0.5.2", 351 | "apollo-server-env": "^2.4.5", 352 | "apollo-server-errors": "^2.4.2", 353 | "apollo-server-plugin-base": "^0.9.1", 354 | "apollo-server-types": "^0.5.1", 355 | "async-retry": "^1.2.1", 356 | "uuid": "^8.0.0" 357 | }, 358 | "dependencies": { 359 | "uuid": { 360 | "version": "8.3.0", 361 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.0.tgz", 362 | "integrity": "sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ==" 363 | } 364 | } 365 | }, 366 | "apollo-engine-reporting-protobuf": { 367 | "version": "0.5.2", 368 | "resolved": "https://registry.npmjs.org/apollo-engine-reporting-protobuf/-/apollo-engine-reporting-protobuf-0.5.2.tgz", 369 | "integrity": "sha512-4wm9FR3B7UvJxcK/69rOiS5CAJPEYKufeRWb257ZLfX7NGFTMqvbc1hu4q8Ch7swB26rTpkzfsftLED9DqH9qg==", 370 | "requires": { 371 | "@apollo/protobufjs": "^1.0.3" 372 | } 373 | }, 374 | "apollo-env": { 375 | "version": "0.6.5", 376 | "resolved": "https://registry.npmjs.org/apollo-env/-/apollo-env-0.6.5.tgz", 377 | "integrity": "sha512-jeBUVsGymeTHYWp3me0R2CZRZrFeuSZeICZHCeRflHTfnQtlmbSXdy5E0pOyRM9CU4JfQkKDC98S1YglQj7Bzg==", 378 | "requires": { 379 | "@types/node-fetch": "2.5.7", 380 | "core-js": "^3.0.1", 381 | "node-fetch": "^2.2.0", 382 | "sha.js": "^2.4.11" 383 | }, 384 | "dependencies": { 385 | "node-fetch": { 386 | "version": "2.6.0", 387 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", 388 | "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" 389 | } 390 | } 391 | }, 392 | "apollo-graphql": { 393 | "version": "0.5.0", 394 | "resolved": "https://registry.npmjs.org/apollo-graphql/-/apollo-graphql-0.5.0.tgz", 395 | "integrity": "sha512-YSdF/BKPbsnQpxWpmCE53pBJX44aaoif31Y22I/qKpB6ZSGzYijV5YBoCL5Q15H2oA/v/02Oazh9lbp4ek3eig==", 396 | "requires": { 397 | "apollo-env": "^0.6.5", 398 | "lodash.sortby": "^4.7.0" 399 | } 400 | }, 401 | "apollo-link": { 402 | "version": "1.1.0", 403 | "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.1.0.tgz", 404 | "integrity": "sha512-8SP3GtYSMpLa6KJaGfgr3NO/wWmB7xLWASQt3Agf08SljGNx3SOt99Yv5VtM8FPs62BoQmESX73IRmtrD1exdA==", 405 | "requires": { 406 | "@types/zen-observable": "0.5.3", 407 | "apollo-utilities": "1.0.6", 408 | "zen-observable": "0.7.1" 409 | } 410 | }, 411 | "apollo-server-caching": { 412 | "version": "0.5.2", 413 | "resolved": "https://registry.npmjs.org/apollo-server-caching/-/apollo-server-caching-0.5.2.tgz", 414 | "integrity": "sha512-HUcP3TlgRsuGgeTOn8QMbkdx0hLPXyEJehZIPrcof0ATz7j7aTPA4at7gaiFHCo8gk07DaWYGB3PFgjboXRcWQ==", 415 | "requires": { 416 | "lru-cache": "^5.0.0" 417 | } 418 | }, 419 | "apollo-server-core": { 420 | "version": "2.16.1", 421 | "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-2.16.1.tgz", 422 | "integrity": "sha512-nuwn5ZBbmzPwDetb3FgiFFJlNK7ZBFg8kis/raymrjd3eBGdNcOyMTJDl6J9673X9Xqp+dXQmFYDW/G3G8S1YA==", 423 | "requires": { 424 | "@apollographql/apollo-tools": "^0.4.3", 425 | "@apollographql/graphql-playground-html": "1.6.26", 426 | "@types/graphql-upload": "^8.0.0", 427 | "@types/ws": "^7.0.0", 428 | "apollo-cache-control": "^0.11.1", 429 | "apollo-datasource": "^0.7.2", 430 | "apollo-engine-reporting": "^2.3.0", 431 | "apollo-server-caching": "^0.5.2", 432 | "apollo-server-env": "^2.4.5", 433 | "apollo-server-errors": "^2.4.2", 434 | "apollo-server-plugin-base": "^0.9.1", 435 | "apollo-server-types": "^0.5.1", 436 | "apollo-tracing": "^0.11.1", 437 | "fast-json-stable-stringify": "^2.0.0", 438 | "graphql-extensions": "^0.12.4", 439 | "graphql-tag": "^2.9.2", 440 | "graphql-tools": "^4.0.0", 441 | "graphql-upload": "^8.0.2", 442 | "loglevel": "^1.6.7", 443 | "sha.js": "^2.4.11", 444 | "subscriptions-transport-ws": "^0.9.11", 445 | "ws": "^6.0.0" 446 | }, 447 | "dependencies": { 448 | "@apollographql/graphql-playground-html": { 449 | "version": "1.6.26", 450 | "resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.26.tgz", 451 | "integrity": "sha512-XAwXOIab51QyhBxnxySdK3nuMEUohhDsHQ5Rbco/V1vjlP75zZ0ZLHD9dTpXTN8uxKxopb2lUvJTq+M4g2Q0HQ==", 452 | "requires": { 453 | "xss": "^1.0.6" 454 | } 455 | }, 456 | "apollo-link": { 457 | "version": "1.2.14", 458 | "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.14.tgz", 459 | "integrity": "sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg==", 460 | "requires": { 461 | "apollo-utilities": "^1.3.0", 462 | "ts-invariant": "^0.4.0", 463 | "tslib": "^1.9.3", 464 | "zen-observable-ts": "^0.8.21" 465 | }, 466 | "dependencies": { 467 | "apollo-utilities": { 468 | "version": "1.3.4", 469 | "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.3.4.tgz", 470 | "integrity": "sha512-pk2hiWrCXMAy2fRPwEyhvka+mqwzeP60Jr1tRYi5xru+3ko94HI9o6lK0CT33/w4RDlxWchmdhDCrvdr+pHCig==", 471 | "requires": { 472 | "@wry/equality": "^0.1.2", 473 | "fast-json-stable-stringify": "^2.0.0", 474 | "ts-invariant": "^0.4.0", 475 | "tslib": "^1.10.0" 476 | } 477 | } 478 | } 479 | }, 480 | "graphql-tools": { 481 | "version": "4.0.8", 482 | "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-4.0.8.tgz", 483 | "integrity": "sha512-MW+ioleBrwhRjalKjYaLQbr+920pHBgy9vM/n47sswtns8+96sRn5M/G+J1eu7IMeKWiN/9p6tmwCHU7552VJg==", 484 | "requires": { 485 | "apollo-link": "^1.2.14", 486 | "apollo-utilities": "^1.0.1", 487 | "deprecated-decorator": "^0.1.6", 488 | "iterall": "^1.1.3", 489 | "uuid": "^3.1.0" 490 | } 491 | } 492 | } 493 | }, 494 | "apollo-server-env": { 495 | "version": "2.4.5", 496 | "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-2.4.5.tgz", 497 | "integrity": "sha512-nfNhmGPzbq3xCEWT8eRpoHXIPNcNy3QcEoBlzVMjeglrBGryLG2LXwBSPnVmTRRrzUYugX0ULBtgE3rBFNoUgA==", 498 | "requires": { 499 | "node-fetch": "^2.1.2", 500 | "util.promisify": "^1.0.0" 501 | }, 502 | "dependencies": { 503 | "node-fetch": { 504 | "version": "2.6.0", 505 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", 506 | "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" 507 | } 508 | } 509 | }, 510 | "apollo-server-errors": { 511 | "version": "2.4.2", 512 | "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-2.4.2.tgz", 513 | "integrity": "sha512-FeGxW3Batn6sUtX3OVVUm7o56EgjxDlmgpTLNyWcLb0j6P8mw9oLNyAm3B+deHA4KNdNHO5BmHS2g1SJYjqPCQ==" 514 | }, 515 | "apollo-server-express": { 516 | "version": "2.14.2", 517 | "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-2.14.2.tgz", 518 | "integrity": "sha512-iYyZm0kQqkM561i9l0WC9HbJsGZJbHP9bhnWaa1Itd+yNBS2AJFp6mRR3hQacsWXUw7ewaKAracMIggvfSH5Aw==", 519 | "requires": { 520 | "@apollographql/graphql-playground-html": "1.6.24", 521 | "@types/accepts": "^1.3.5", 522 | "@types/body-parser": "1.19.0", 523 | "@types/cors": "^2.8.4", 524 | "@types/express": "4.17.4", 525 | "accepts": "^1.3.5", 526 | "apollo-server-core": "^2.14.2", 527 | "apollo-server-types": "^0.5.0", 528 | "body-parser": "^1.18.3", 529 | "cors": "^2.8.4", 530 | "express": "^4.17.1", 531 | "graphql-subscriptions": "^1.0.0", 532 | "graphql-tools": "^4.0.0", 533 | "parseurl": "^1.3.2", 534 | "subscriptions-transport-ws": "^0.9.16", 535 | "type-is": "^1.6.16" 536 | }, 537 | "dependencies": { 538 | "accepts": { 539 | "version": "1.3.7", 540 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", 541 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", 542 | "requires": { 543 | "mime-types": "~2.1.24", 544 | "negotiator": "0.6.2" 545 | } 546 | }, 547 | "apollo-link": { 548 | "version": "1.2.14", 549 | "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.14.tgz", 550 | "integrity": "sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg==", 551 | "requires": { 552 | "apollo-utilities": "^1.3.0", 553 | "ts-invariant": "^0.4.0", 554 | "tslib": "^1.9.3", 555 | "zen-observable-ts": "^0.8.21" 556 | }, 557 | "dependencies": { 558 | "apollo-utilities": { 559 | "version": "1.3.4", 560 | "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.3.4.tgz", 561 | "integrity": "sha512-pk2hiWrCXMAy2fRPwEyhvka+mqwzeP60Jr1tRYi5xru+3ko94HI9o6lK0CT33/w4RDlxWchmdhDCrvdr+pHCig==", 562 | "requires": { 563 | "@wry/equality": "^0.1.2", 564 | "fast-json-stable-stringify": "^2.0.0", 565 | "ts-invariant": "^0.4.0", 566 | "tslib": "^1.10.0" 567 | } 568 | } 569 | } 570 | }, 571 | "body-parser": { 572 | "version": "1.19.0", 573 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", 574 | "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", 575 | "requires": { 576 | "bytes": "3.1.0", 577 | "content-type": "~1.0.4", 578 | "debug": "2.6.9", 579 | "depd": "~1.1.2", 580 | "http-errors": "1.7.2", 581 | "iconv-lite": "0.4.24", 582 | "on-finished": "~2.3.0", 583 | "qs": "6.7.0", 584 | "raw-body": "2.4.0", 585 | "type-is": "~1.6.17" 586 | } 587 | }, 588 | "bytes": { 589 | "version": "3.1.0", 590 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", 591 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" 592 | }, 593 | "content-disposition": { 594 | "version": "0.5.3", 595 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", 596 | "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", 597 | "requires": { 598 | "safe-buffer": "5.1.2" 599 | } 600 | }, 601 | "cookie": { 602 | "version": "0.4.0", 603 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", 604 | "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" 605 | }, 606 | "express": { 607 | "version": "4.17.1", 608 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", 609 | "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", 610 | "requires": { 611 | "accepts": "~1.3.7", 612 | "array-flatten": "1.1.1", 613 | "body-parser": "1.19.0", 614 | "content-disposition": "0.5.3", 615 | "content-type": "~1.0.4", 616 | "cookie": "0.4.0", 617 | "cookie-signature": "1.0.6", 618 | "debug": "2.6.9", 619 | "depd": "~1.1.2", 620 | "encodeurl": "~1.0.2", 621 | "escape-html": "~1.0.3", 622 | "etag": "~1.8.1", 623 | "finalhandler": "~1.1.2", 624 | "fresh": "0.5.2", 625 | "merge-descriptors": "1.0.1", 626 | "methods": "~1.1.2", 627 | "on-finished": "~2.3.0", 628 | "parseurl": "~1.3.3", 629 | "path-to-regexp": "0.1.7", 630 | "proxy-addr": "~2.0.5", 631 | "qs": "6.7.0", 632 | "range-parser": "~1.2.1", 633 | "safe-buffer": "5.1.2", 634 | "send": "0.17.1", 635 | "serve-static": "1.14.1", 636 | "setprototypeof": "1.1.1", 637 | "statuses": "~1.5.0", 638 | "type-is": "~1.6.18", 639 | "utils-merge": "1.0.1", 640 | "vary": "~1.1.2" 641 | }, 642 | "dependencies": { 643 | "parseurl": { 644 | "version": "1.3.3", 645 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 646 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 647 | } 648 | } 649 | }, 650 | "finalhandler": { 651 | "version": "1.1.2", 652 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 653 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 654 | "requires": { 655 | "debug": "2.6.9", 656 | "encodeurl": "~1.0.2", 657 | "escape-html": "~1.0.3", 658 | "on-finished": "~2.3.0", 659 | "parseurl": "~1.3.3", 660 | "statuses": "~1.5.0", 661 | "unpipe": "~1.0.0" 662 | }, 663 | "dependencies": { 664 | "parseurl": { 665 | "version": "1.3.3", 666 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 667 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 668 | } 669 | } 670 | }, 671 | "graphql-tools": { 672 | "version": "4.0.8", 673 | "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-4.0.8.tgz", 674 | "integrity": "sha512-MW+ioleBrwhRjalKjYaLQbr+920pHBgy9vM/n47sswtns8+96sRn5M/G+J1eu7IMeKWiN/9p6tmwCHU7552VJg==", 675 | "requires": { 676 | "apollo-link": "^1.2.14", 677 | "apollo-utilities": "^1.0.1", 678 | "deprecated-decorator": "^0.1.6", 679 | "iterall": "^1.1.3", 680 | "uuid": "^3.1.0" 681 | } 682 | }, 683 | "http-errors": { 684 | "version": "1.7.2", 685 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", 686 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", 687 | "requires": { 688 | "depd": "~1.1.2", 689 | "inherits": "2.0.3", 690 | "setprototypeof": "1.1.1", 691 | "statuses": ">= 1.5.0 < 2", 692 | "toidentifier": "1.0.0" 693 | } 694 | }, 695 | "iconv-lite": { 696 | "version": "0.4.24", 697 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 698 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 699 | "requires": { 700 | "safer-buffer": ">= 2.1.2 < 3" 701 | } 702 | }, 703 | "ipaddr.js": { 704 | "version": "1.9.1", 705 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 706 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" 707 | }, 708 | "mime": { 709 | "version": "1.6.0", 710 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 711 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 712 | }, 713 | "mime-db": { 714 | "version": "1.44.0", 715 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", 716 | "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" 717 | }, 718 | "mime-types": { 719 | "version": "2.1.27", 720 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", 721 | "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", 722 | "requires": { 723 | "mime-db": "1.44.0" 724 | } 725 | }, 726 | "ms": { 727 | "version": "2.1.1", 728 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 729 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" 730 | }, 731 | "negotiator": { 732 | "version": "0.6.2", 733 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 734 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" 735 | }, 736 | "proxy-addr": { 737 | "version": "2.0.6", 738 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", 739 | "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", 740 | "requires": { 741 | "forwarded": "~0.1.2", 742 | "ipaddr.js": "1.9.1" 743 | } 744 | }, 745 | "qs": { 746 | "version": "6.7.0", 747 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", 748 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" 749 | }, 750 | "range-parser": { 751 | "version": "1.2.1", 752 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 753 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 754 | }, 755 | "raw-body": { 756 | "version": "2.4.0", 757 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", 758 | "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", 759 | "requires": { 760 | "bytes": "3.1.0", 761 | "http-errors": "1.7.2", 762 | "iconv-lite": "0.4.24", 763 | "unpipe": "1.0.0" 764 | } 765 | }, 766 | "safe-buffer": { 767 | "version": "5.1.2", 768 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 769 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 770 | }, 771 | "send": { 772 | "version": "0.17.1", 773 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", 774 | "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", 775 | "requires": { 776 | "debug": "2.6.9", 777 | "depd": "~1.1.2", 778 | "destroy": "~1.0.4", 779 | "encodeurl": "~1.0.2", 780 | "escape-html": "~1.0.3", 781 | "etag": "~1.8.1", 782 | "fresh": "0.5.2", 783 | "http-errors": "~1.7.2", 784 | "mime": "1.6.0", 785 | "ms": "2.1.1", 786 | "on-finished": "~2.3.0", 787 | "range-parser": "~1.2.1", 788 | "statuses": "~1.5.0" 789 | } 790 | }, 791 | "serve-static": { 792 | "version": "1.14.1", 793 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", 794 | "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", 795 | "requires": { 796 | "encodeurl": "~1.0.2", 797 | "escape-html": "~1.0.3", 798 | "parseurl": "~1.3.3", 799 | "send": "0.17.1" 800 | }, 801 | "dependencies": { 802 | "parseurl": { 803 | "version": "1.3.3", 804 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 805 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 806 | } 807 | } 808 | }, 809 | "setprototypeof": { 810 | "version": "1.1.1", 811 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 812 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" 813 | }, 814 | "statuses": { 815 | "version": "1.5.0", 816 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 817 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" 818 | }, 819 | "type-is": { 820 | "version": "1.6.18", 821 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 822 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 823 | "requires": { 824 | "media-typer": "0.3.0", 825 | "mime-types": "~2.1.24" 826 | } 827 | } 828 | } 829 | }, 830 | "apollo-server-plugin-base": { 831 | "version": "0.9.1", 832 | "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-0.9.1.tgz", 833 | "integrity": "sha512-kvrX4Z3FdpjrZdHkyl5iY2A1Wvp4b6KQp00DeZqss7GyyKNUBKr80/7RQgBLEw7EWM7WB19j459xM/TjvW0FKQ==", 834 | "requires": { 835 | "apollo-server-types": "^0.5.1" 836 | } 837 | }, 838 | "apollo-server-types": { 839 | "version": "0.5.1", 840 | "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-0.5.1.tgz", 841 | "integrity": "sha512-my2cPw+DAb2qVnIuBcsRKGyS28uIc2vjFxa1NpRoJZe9gK0BWUBk7wzXnIzWy3HZ5Er11e/40MPTUesNfMYNVA==", 842 | "requires": { 843 | "apollo-engine-reporting-protobuf": "^0.5.2", 844 | "apollo-server-caching": "^0.5.2", 845 | "apollo-server-env": "^2.4.5" 846 | } 847 | }, 848 | "apollo-tracing": { 849 | "version": "0.11.1", 850 | "resolved": "https://registry.npmjs.org/apollo-tracing/-/apollo-tracing-0.11.1.tgz", 851 | "integrity": "sha512-l7g+uILw7v32GA46IRXIx5XXbZhFI96BhSqrGK9yyvfq+NMcvVZrj3kIhRImPGhAjMdV+5biA/jztabElAbDjg==", 852 | "requires": { 853 | "apollo-server-env": "^2.4.5", 854 | "apollo-server-plugin-base": "^0.9.1" 855 | } 856 | }, 857 | "apollo-utilities": { 858 | "version": "1.0.6", 859 | "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.0.6.tgz", 860 | "integrity": "sha512-3EUdGs19ZU5hN0zPF0h27blkd4aFqFxF0Qkec8o7iPFzxFeEf0UJGPg/b1St417K7Rta6/EDq2cYBQEzvOVq1g==" 861 | }, 862 | "array-flatten": { 863 | "version": "1.1.1", 864 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 865 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 866 | }, 867 | "async-limiter": { 868 | "version": "1.0.1", 869 | "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", 870 | "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" 871 | }, 872 | "async-retry": { 873 | "version": "1.3.1", 874 | "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.1.tgz", 875 | "integrity": "sha512-aiieFW/7h3hY0Bq5d+ktDBejxuwR78vRu9hDUdR8rNhSaQ29VzPL4AoIRG7D/c7tdenwOcKvgPM6tIxB3cB6HA==", 876 | "requires": { 877 | "retry": "0.12.0" 878 | } 879 | }, 880 | "asynckit": { 881 | "version": "0.4.0", 882 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 883 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" 884 | }, 885 | "backo2": { 886 | "version": "1.0.2", 887 | "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", 888 | "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" 889 | }, 890 | "body-parser": { 891 | "version": "1.18.2", 892 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", 893 | "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", 894 | "requires": { 895 | "bytes": "3.0.0", 896 | "content-type": "1.0.4", 897 | "debug": "2.6.9", 898 | "depd": "1.1.2", 899 | "http-errors": "1.6.2", 900 | "iconv-lite": "0.4.19", 901 | "on-finished": "2.3.0", 902 | "qs": "6.5.1", 903 | "raw-body": "2.3.2", 904 | "type-is": "1.6.15" 905 | } 906 | }, 907 | "busboy": { 908 | "version": "0.3.1", 909 | "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.3.1.tgz", 910 | "integrity": "sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw==", 911 | "requires": { 912 | "dicer": "0.3.0" 913 | } 914 | }, 915 | "bytes": { 916 | "version": "3.0.0", 917 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", 918 | "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" 919 | }, 920 | "call-bind": { 921 | "version": "1.0.2", 922 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 923 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 924 | "requires": { 925 | "function-bind": "^1.1.1", 926 | "get-intrinsic": "^1.0.2" 927 | } 928 | }, 929 | "combined-stream": { 930 | "version": "1.0.8", 931 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 932 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 933 | "requires": { 934 | "delayed-stream": "~1.0.0" 935 | } 936 | }, 937 | "commander": { 938 | "version": "2.20.3", 939 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 940 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" 941 | }, 942 | "content-disposition": { 943 | "version": "0.5.4", 944 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", 945 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", 946 | "requires": { 947 | "safe-buffer": "5.2.1" 948 | }, 949 | "dependencies": { 950 | "safe-buffer": { 951 | "version": "5.2.1", 952 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 953 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 954 | } 955 | } 956 | }, 957 | "content-type": { 958 | "version": "1.0.4", 959 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 960 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 961 | }, 962 | "cookie": { 963 | "version": "0.5.0", 964 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", 965 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" 966 | }, 967 | "cookie-signature": { 968 | "version": "1.0.6", 969 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 970 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 971 | }, 972 | "core-js": { 973 | "version": "3.6.5", 974 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", 975 | "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==" 976 | }, 977 | "cors": { 978 | "version": "2.8.4", 979 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.4.tgz", 980 | "integrity": "sha1-K9OB8usgECAQXNUOpZ2mMJBpRoY=", 981 | "requires": { 982 | "object-assign": "4.1.1", 983 | "vary": "1.1.2" 984 | } 985 | }, 986 | "cssfilter": { 987 | "version": "0.0.10", 988 | "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", 989 | "integrity": "sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4=" 990 | }, 991 | "debug": { 992 | "version": "2.6.9", 993 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 994 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 995 | "requires": { 996 | "ms": "2.0.0" 997 | } 998 | }, 999 | "define-properties": { 1000 | "version": "1.1.3", 1001 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 1002 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 1003 | "requires": { 1004 | "object-keys": "^1.0.12" 1005 | } 1006 | }, 1007 | "delayed-stream": { 1008 | "version": "1.0.0", 1009 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 1010 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" 1011 | }, 1012 | "depd": { 1013 | "version": "1.1.2", 1014 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 1015 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 1016 | }, 1017 | "deprecated-decorator": { 1018 | "version": "0.1.6", 1019 | "resolved": "https://registry.npmjs.org/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz", 1020 | "integrity": "sha1-AJZjF7ehL+kvPMgx91g68ym4bDc=" 1021 | }, 1022 | "destroy": { 1023 | "version": "1.0.4", 1024 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 1025 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 1026 | }, 1027 | "dicer": { 1028 | "version": "0.3.0", 1029 | "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz", 1030 | "integrity": "sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==", 1031 | "requires": { 1032 | "streamsearch": "0.1.2" 1033 | } 1034 | }, 1035 | "ee-first": { 1036 | "version": "1.1.1", 1037 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 1038 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 1039 | }, 1040 | "encodeurl": { 1041 | "version": "1.0.2", 1042 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 1043 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 1044 | }, 1045 | "es-abstract": { 1046 | "version": "1.17.6", 1047 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", 1048 | "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", 1049 | "requires": { 1050 | "es-to-primitive": "^1.2.1", 1051 | "function-bind": "^1.1.1", 1052 | "has": "^1.0.3", 1053 | "has-symbols": "^1.0.1", 1054 | "is-callable": "^1.2.0", 1055 | "is-regex": "^1.1.0", 1056 | "object-inspect": "^1.7.0", 1057 | "object-keys": "^1.1.1", 1058 | "object.assign": "^4.1.0", 1059 | "string.prototype.trimend": "^1.0.1", 1060 | "string.prototype.trimstart": "^1.0.1" 1061 | } 1062 | }, 1063 | "es-to-primitive": { 1064 | "version": "1.2.1", 1065 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 1066 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 1067 | "requires": { 1068 | "is-callable": "^1.1.4", 1069 | "is-date-object": "^1.0.1", 1070 | "is-symbol": "^1.0.2" 1071 | } 1072 | }, 1073 | "escape-html": { 1074 | "version": "1.0.3", 1075 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 1076 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 1077 | }, 1078 | "etag": { 1079 | "version": "1.8.1", 1080 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 1081 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" 1082 | }, 1083 | "eventemitter3": { 1084 | "version": "3.1.2", 1085 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", 1086 | "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" 1087 | }, 1088 | "express": { 1089 | "version": "4.18.0", 1090 | "resolved": "https://registry.npmjs.org/express/-/express-4.18.0.tgz", 1091 | "integrity": "sha512-EJEXxiTQJS3lIPrU1AE2vRuT7X7E+0KBbpm5GSoK524yl0K8X+er8zS2P14E64eqsVNoWbMCT7MpmQ+ErAhgRg==", 1092 | "requires": { 1093 | "accepts": "~1.3.8", 1094 | "array-flatten": "1.1.1", 1095 | "body-parser": "1.20.0", 1096 | "content-disposition": "0.5.4", 1097 | "content-type": "~1.0.4", 1098 | "cookie": "0.5.0", 1099 | "cookie-signature": "1.0.6", 1100 | "debug": "2.6.9", 1101 | "depd": "2.0.0", 1102 | "encodeurl": "~1.0.2", 1103 | "escape-html": "~1.0.3", 1104 | "etag": "~1.8.1", 1105 | "finalhandler": "1.2.0", 1106 | "fresh": "0.5.2", 1107 | "http-errors": "2.0.0", 1108 | "merge-descriptors": "1.0.1", 1109 | "methods": "~1.1.2", 1110 | "on-finished": "2.4.1", 1111 | "parseurl": "~1.3.3", 1112 | "path-to-regexp": "0.1.7", 1113 | "proxy-addr": "~2.0.7", 1114 | "qs": "6.10.3", 1115 | "range-parser": "~1.2.1", 1116 | "safe-buffer": "5.2.1", 1117 | "send": "0.18.0", 1118 | "serve-static": "1.15.0", 1119 | "setprototypeof": "1.2.0", 1120 | "statuses": "2.0.1", 1121 | "type-is": "~1.6.18", 1122 | "utils-merge": "1.0.1", 1123 | "vary": "~1.1.2" 1124 | }, 1125 | "dependencies": { 1126 | "body-parser": { 1127 | "version": "1.20.0", 1128 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", 1129 | "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", 1130 | "requires": { 1131 | "bytes": "3.1.2", 1132 | "content-type": "~1.0.4", 1133 | "debug": "2.6.9", 1134 | "depd": "2.0.0", 1135 | "destroy": "1.2.0", 1136 | "http-errors": "2.0.0", 1137 | "iconv-lite": "0.4.24", 1138 | "on-finished": "2.4.1", 1139 | "qs": "6.10.3", 1140 | "raw-body": "2.5.1", 1141 | "type-is": "~1.6.18", 1142 | "unpipe": "1.0.0" 1143 | } 1144 | }, 1145 | "bytes": { 1146 | "version": "3.1.2", 1147 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 1148 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" 1149 | }, 1150 | "depd": { 1151 | "version": "2.0.0", 1152 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 1153 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" 1154 | }, 1155 | "destroy": { 1156 | "version": "1.2.0", 1157 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", 1158 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" 1159 | }, 1160 | "http-errors": { 1161 | "version": "2.0.0", 1162 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", 1163 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", 1164 | "requires": { 1165 | "depd": "2.0.0", 1166 | "inherits": "2.0.4", 1167 | "setprototypeof": "1.2.0", 1168 | "statuses": "2.0.1", 1169 | "toidentifier": "1.0.1" 1170 | } 1171 | }, 1172 | "iconv-lite": { 1173 | "version": "0.4.24", 1174 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 1175 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 1176 | "requires": { 1177 | "safer-buffer": ">= 2.1.2 < 3" 1178 | } 1179 | }, 1180 | "inherits": { 1181 | "version": "2.0.4", 1182 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1183 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1184 | }, 1185 | "mime-db": { 1186 | "version": "1.52.0", 1187 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 1188 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" 1189 | }, 1190 | "mime-types": { 1191 | "version": "2.1.35", 1192 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 1193 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 1194 | "requires": { 1195 | "mime-db": "1.52.0" 1196 | } 1197 | }, 1198 | "on-finished": { 1199 | "version": "2.4.1", 1200 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", 1201 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", 1202 | "requires": { 1203 | "ee-first": "1.1.1" 1204 | } 1205 | }, 1206 | "parseurl": { 1207 | "version": "1.3.3", 1208 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 1209 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 1210 | }, 1211 | "qs": { 1212 | "version": "6.10.3", 1213 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", 1214 | "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", 1215 | "requires": { 1216 | "side-channel": "^1.0.4" 1217 | } 1218 | }, 1219 | "raw-body": { 1220 | "version": "2.5.1", 1221 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", 1222 | "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", 1223 | "requires": { 1224 | "bytes": "3.1.2", 1225 | "http-errors": "2.0.0", 1226 | "iconv-lite": "0.4.24", 1227 | "unpipe": "1.0.0" 1228 | } 1229 | }, 1230 | "safe-buffer": { 1231 | "version": "5.2.1", 1232 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1233 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 1234 | }, 1235 | "setprototypeof": { 1236 | "version": "1.2.0", 1237 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 1238 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 1239 | }, 1240 | "statuses": { 1241 | "version": "2.0.1", 1242 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 1243 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" 1244 | }, 1245 | "toidentifier": { 1246 | "version": "1.0.1", 1247 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 1248 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" 1249 | }, 1250 | "type-is": { 1251 | "version": "1.6.18", 1252 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 1253 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 1254 | "requires": { 1255 | "media-typer": "0.3.0", 1256 | "mime-types": "~2.1.24" 1257 | } 1258 | } 1259 | } 1260 | }, 1261 | "fast-json-stable-stringify": { 1262 | "version": "2.1.0", 1263 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1264 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" 1265 | }, 1266 | "finalhandler": { 1267 | "version": "1.2.0", 1268 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", 1269 | "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", 1270 | "requires": { 1271 | "debug": "2.6.9", 1272 | "encodeurl": "~1.0.2", 1273 | "escape-html": "~1.0.3", 1274 | "on-finished": "2.4.1", 1275 | "parseurl": "~1.3.3", 1276 | "statuses": "2.0.1", 1277 | "unpipe": "~1.0.0" 1278 | }, 1279 | "dependencies": { 1280 | "on-finished": { 1281 | "version": "2.4.1", 1282 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", 1283 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", 1284 | "requires": { 1285 | "ee-first": "1.1.1" 1286 | } 1287 | }, 1288 | "parseurl": { 1289 | "version": "1.3.3", 1290 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 1291 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 1292 | }, 1293 | "statuses": { 1294 | "version": "2.0.1", 1295 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 1296 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" 1297 | } 1298 | } 1299 | }, 1300 | "form-data": { 1301 | "version": "3.0.0", 1302 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz", 1303 | "integrity": "sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==", 1304 | "requires": { 1305 | "asynckit": "^0.4.0", 1306 | "combined-stream": "^1.0.8", 1307 | "mime-types": "^2.1.12" 1308 | } 1309 | }, 1310 | "forwarded": { 1311 | "version": "0.1.2", 1312 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", 1313 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" 1314 | }, 1315 | "fresh": { 1316 | "version": "0.5.2", 1317 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 1318 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 1319 | }, 1320 | "fs-capacitor": { 1321 | "version": "2.0.4", 1322 | "resolved": "https://registry.npmjs.org/fs-capacitor/-/fs-capacitor-2.0.4.tgz", 1323 | "integrity": "sha512-8S4f4WsCryNw2mJJchi46YgB6CR5Ze+4L1h8ewl9tEpL4SJ3ZO+c/bS4BWhB8bK+O3TMqhuZarTitd0S0eh2pA==" 1324 | }, 1325 | "function-bind": { 1326 | "version": "1.1.1", 1327 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1328 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 1329 | }, 1330 | "get-intrinsic": { 1331 | "version": "1.1.3", 1332 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", 1333 | "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", 1334 | "requires": { 1335 | "function-bind": "^1.1.1", 1336 | "has": "^1.0.3", 1337 | "has-symbols": "^1.0.3" 1338 | }, 1339 | "dependencies": { 1340 | "has-symbols": { 1341 | "version": "1.0.3", 1342 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 1343 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" 1344 | } 1345 | } 1346 | }, 1347 | "graphql": { 1348 | "version": "0.13.0", 1349 | "resolved": "https://registry.npmjs.org/graphql/-/graphql-0.13.0.tgz", 1350 | "integrity": "sha512-WlO+ZJT9aY3YrBT+H5Kk+eVb3OVVehB9iRD/xqeHdmrrn4AFl5FIcOpfHz/vnBr6Y6JthGMlnFqU8XRnDjSR7A==", 1351 | "requires": { 1352 | "iterall": "1.1.4" 1353 | } 1354 | }, 1355 | "graphql-extensions": { 1356 | "version": "0.12.4", 1357 | "resolved": "https://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.12.4.tgz", 1358 | "integrity": "sha512-GnR4LiWk3s2bGOqIh6V1JgnSXw2RCH4NOgbCFEWvB6JqWHXTlXnLZ8bRSkCiD4pltv7RHUPWqN/sGh8R6Ae/ag==", 1359 | "requires": { 1360 | "@apollographql/apollo-tools": "^0.4.3", 1361 | "apollo-server-env": "^2.4.5", 1362 | "apollo-server-types": "^0.5.1" 1363 | } 1364 | }, 1365 | "graphql-subscriptions": { 1366 | "version": "1.1.0", 1367 | "resolved": "https://registry.npmjs.org/graphql-subscriptions/-/graphql-subscriptions-1.1.0.tgz", 1368 | "integrity": "sha512-6WzlBFC0lWmXJbIVE8OgFgXIP4RJi3OQgTPa0DVMsDXdpRDjTsM1K9wfl5HSYX7R87QAGlvcv2Y4BIZa/ItonA==", 1369 | "requires": { 1370 | "iterall": "^1.2.1" 1371 | }, 1372 | "dependencies": { 1373 | "iterall": { 1374 | "version": "1.3.0", 1375 | "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", 1376 | "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==" 1377 | } 1378 | } 1379 | }, 1380 | "graphql-tag": { 1381 | "version": "2.11.0", 1382 | "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.11.0.tgz", 1383 | "integrity": "sha512-VmsD5pJqWJnQZMUeRwrDhfgoyqcfwEkvtpANqcoUG8/tOLkwNgU9mzub/Mc78OJMhHjx7gfAMTxzdG43VGg3bA==" 1384 | }, 1385 | "graphql-tools": { 1386 | "version": "2.21.0", 1387 | "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-2.21.0.tgz", 1388 | "integrity": "sha512-AmG4WGdpL1OHwnA20ouP7BVB3KnvUOvsc7+4ULWRzEunyRFUYqxrgnEf20iZnYAha8JCb7AP4WPMwWKmGT91rg==", 1389 | "requires": { 1390 | "apollo-link": "1.1.0", 1391 | "apollo-utilities": "1.0.6", 1392 | "deprecated-decorator": "0.1.6", 1393 | "iterall": "1.1.4", 1394 | "uuid": "3.2.1" 1395 | } 1396 | }, 1397 | "graphql-upload": { 1398 | "version": "8.1.0", 1399 | "resolved": "https://registry.npmjs.org/graphql-upload/-/graphql-upload-8.1.0.tgz", 1400 | "integrity": "sha512-U2OiDI5VxYmzRKw0Z2dmfk0zkqMRaecH9Smh1U277gVgVe9Qn+18xqf4skwr4YJszGIh7iQDZ57+5ygOK9sM/Q==", 1401 | "requires": { 1402 | "busboy": "^0.3.1", 1403 | "fs-capacitor": "^2.0.4", 1404 | "http-errors": "^1.7.3", 1405 | "object-path": "^0.11.4" 1406 | }, 1407 | "dependencies": { 1408 | "http-errors": { 1409 | "version": "1.8.0", 1410 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.0.tgz", 1411 | "integrity": "sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A==", 1412 | "requires": { 1413 | "depd": "~1.1.2", 1414 | "inherits": "2.0.4", 1415 | "setprototypeof": "1.2.0", 1416 | "statuses": ">= 1.5.0 < 2", 1417 | "toidentifier": "1.0.0" 1418 | } 1419 | }, 1420 | "inherits": { 1421 | "version": "2.0.4", 1422 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1423 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1424 | }, 1425 | "setprototypeof": { 1426 | "version": "1.2.0", 1427 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 1428 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 1429 | }, 1430 | "statuses": { 1431 | "version": "1.5.0", 1432 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 1433 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" 1434 | } 1435 | } 1436 | }, 1437 | "has": { 1438 | "version": "1.0.3", 1439 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1440 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1441 | "requires": { 1442 | "function-bind": "^1.1.1" 1443 | } 1444 | }, 1445 | "has-symbols": { 1446 | "version": "1.0.1", 1447 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", 1448 | "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" 1449 | }, 1450 | "http-errors": { 1451 | "version": "1.6.2", 1452 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", 1453 | "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", 1454 | "requires": { 1455 | "depd": "1.1.1", 1456 | "inherits": "2.0.3", 1457 | "setprototypeof": "1.0.3", 1458 | "statuses": "1.4.0" 1459 | }, 1460 | "dependencies": { 1461 | "depd": { 1462 | "version": "1.1.1", 1463 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", 1464 | "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" 1465 | } 1466 | } 1467 | }, 1468 | "iconv-lite": { 1469 | "version": "0.4.19", 1470 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", 1471 | "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" 1472 | }, 1473 | "inherits": { 1474 | "version": "2.0.3", 1475 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1476 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 1477 | }, 1478 | "ipaddr.js": { 1479 | "version": "1.9.1", 1480 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 1481 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" 1482 | }, 1483 | "is-callable": { 1484 | "version": "1.2.0", 1485 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", 1486 | "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==" 1487 | }, 1488 | "is-date-object": { 1489 | "version": "1.0.2", 1490 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", 1491 | "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" 1492 | }, 1493 | "is-regex": { 1494 | "version": "1.1.1", 1495 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", 1496 | "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", 1497 | "requires": { 1498 | "has-symbols": "^1.0.1" 1499 | } 1500 | }, 1501 | "is-symbol": { 1502 | "version": "1.0.3", 1503 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", 1504 | "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", 1505 | "requires": { 1506 | "has-symbols": "^1.0.1" 1507 | } 1508 | }, 1509 | "iterall": { 1510 | "version": "1.1.4", 1511 | "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.1.4.tgz", 1512 | "integrity": "sha512-eaDsM/PY8D/X5mYQhecVc5/9xvSHED7yPON+ffQroBeTuqUVm7dfphMkK8NksXuImqZlVRoKtrNfMIVCYIqaUQ==" 1513 | }, 1514 | "lodash.sortby": { 1515 | "version": "4.7.0", 1516 | "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", 1517 | "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" 1518 | }, 1519 | "loglevel": { 1520 | "version": "1.6.8", 1521 | "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.8.tgz", 1522 | "integrity": "sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==" 1523 | }, 1524 | "long": { 1525 | "version": "4.0.0", 1526 | "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", 1527 | "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" 1528 | }, 1529 | "lru-cache": { 1530 | "version": "5.1.1", 1531 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", 1532 | "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", 1533 | "requires": { 1534 | "yallist": "^3.0.2" 1535 | } 1536 | }, 1537 | "media-typer": { 1538 | "version": "0.3.0", 1539 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 1540 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 1541 | }, 1542 | "merge-descriptors": { 1543 | "version": "1.0.1", 1544 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 1545 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 1546 | }, 1547 | "methods": { 1548 | "version": "1.1.2", 1549 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 1550 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" 1551 | }, 1552 | "mime": { 1553 | "version": "1.6.0", 1554 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 1555 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 1556 | }, 1557 | "mime-db": { 1558 | "version": "1.30.0", 1559 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", 1560 | "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" 1561 | }, 1562 | "mime-types": { 1563 | "version": "2.1.17", 1564 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", 1565 | "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", 1566 | "requires": { 1567 | "mime-db": "1.30.0" 1568 | } 1569 | }, 1570 | "ms": { 1571 | "version": "2.0.0", 1572 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1573 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 1574 | }, 1575 | "negotiator": { 1576 | "version": "0.6.3", 1577 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 1578 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" 1579 | }, 1580 | "node-fetch": { 1581 | "version": "2.6.7", 1582 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 1583 | "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 1584 | "requires": { 1585 | "whatwg-url": "^5.0.0" 1586 | } 1587 | }, 1588 | "object-assign": { 1589 | "version": "4.1.1", 1590 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1591 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 1592 | }, 1593 | "object-inspect": { 1594 | "version": "1.8.0", 1595 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", 1596 | "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==" 1597 | }, 1598 | "object-keys": { 1599 | "version": "1.1.1", 1600 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 1601 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" 1602 | }, 1603 | "object-path": { 1604 | "version": "0.11.8", 1605 | "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.8.tgz", 1606 | "integrity": "sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==" 1607 | }, 1608 | "object.assign": { 1609 | "version": "4.1.0", 1610 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", 1611 | "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", 1612 | "requires": { 1613 | "define-properties": "^1.1.2", 1614 | "function-bind": "^1.1.1", 1615 | "has-symbols": "^1.0.0", 1616 | "object-keys": "^1.0.11" 1617 | } 1618 | }, 1619 | "object.getownpropertydescriptors": { 1620 | "version": "2.1.0", 1621 | "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", 1622 | "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", 1623 | "requires": { 1624 | "define-properties": "^1.1.3", 1625 | "es-abstract": "^1.17.0-next.1" 1626 | } 1627 | }, 1628 | "on-finished": { 1629 | "version": "2.3.0", 1630 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 1631 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 1632 | "requires": { 1633 | "ee-first": "1.1.1" 1634 | } 1635 | }, 1636 | "parseurl": { 1637 | "version": "1.3.2", 1638 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", 1639 | "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" 1640 | }, 1641 | "path-to-regexp": { 1642 | "version": "0.1.7", 1643 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 1644 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 1645 | }, 1646 | "proxy-addr": { 1647 | "version": "2.0.7", 1648 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", 1649 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", 1650 | "requires": { 1651 | "forwarded": "0.2.0", 1652 | "ipaddr.js": "1.9.1" 1653 | }, 1654 | "dependencies": { 1655 | "forwarded": { 1656 | "version": "0.2.0", 1657 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", 1658 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" 1659 | } 1660 | } 1661 | }, 1662 | "qs": { 1663 | "version": "6.5.1", 1664 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", 1665 | "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" 1666 | }, 1667 | "range-parser": { 1668 | "version": "1.2.1", 1669 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 1670 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 1671 | }, 1672 | "raw-body": { 1673 | "version": "2.3.2", 1674 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", 1675 | "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", 1676 | "requires": { 1677 | "bytes": "3.0.0", 1678 | "http-errors": "1.6.2", 1679 | "iconv-lite": "0.4.19", 1680 | "unpipe": "1.0.0" 1681 | } 1682 | }, 1683 | "retry": { 1684 | "version": "0.12.0", 1685 | "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", 1686 | "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=" 1687 | }, 1688 | "safe-buffer": { 1689 | "version": "5.1.1", 1690 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 1691 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" 1692 | }, 1693 | "safer-buffer": { 1694 | "version": "2.1.2", 1695 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1696 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1697 | }, 1698 | "send": { 1699 | "version": "0.18.0", 1700 | "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", 1701 | "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", 1702 | "requires": { 1703 | "debug": "2.6.9", 1704 | "depd": "2.0.0", 1705 | "destroy": "1.2.0", 1706 | "encodeurl": "~1.0.2", 1707 | "escape-html": "~1.0.3", 1708 | "etag": "~1.8.1", 1709 | "fresh": "0.5.2", 1710 | "http-errors": "2.0.0", 1711 | "mime": "1.6.0", 1712 | "ms": "2.1.3", 1713 | "on-finished": "2.4.1", 1714 | "range-parser": "~1.2.1", 1715 | "statuses": "2.0.1" 1716 | }, 1717 | "dependencies": { 1718 | "depd": { 1719 | "version": "2.0.0", 1720 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 1721 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" 1722 | }, 1723 | "destroy": { 1724 | "version": "1.2.0", 1725 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", 1726 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" 1727 | }, 1728 | "http-errors": { 1729 | "version": "2.0.0", 1730 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", 1731 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", 1732 | "requires": { 1733 | "depd": "2.0.0", 1734 | "inherits": "2.0.4", 1735 | "setprototypeof": "1.2.0", 1736 | "statuses": "2.0.1", 1737 | "toidentifier": "1.0.1" 1738 | } 1739 | }, 1740 | "inherits": { 1741 | "version": "2.0.4", 1742 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1743 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1744 | }, 1745 | "ms": { 1746 | "version": "2.1.3", 1747 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1748 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 1749 | }, 1750 | "on-finished": { 1751 | "version": "2.4.1", 1752 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", 1753 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", 1754 | "requires": { 1755 | "ee-first": "1.1.1" 1756 | } 1757 | }, 1758 | "setprototypeof": { 1759 | "version": "1.2.0", 1760 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 1761 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 1762 | }, 1763 | "statuses": { 1764 | "version": "2.0.1", 1765 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 1766 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" 1767 | }, 1768 | "toidentifier": { 1769 | "version": "1.0.1", 1770 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 1771 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" 1772 | } 1773 | } 1774 | }, 1775 | "serve-static": { 1776 | "version": "1.15.0", 1777 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", 1778 | "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", 1779 | "requires": { 1780 | "encodeurl": "~1.0.2", 1781 | "escape-html": "~1.0.3", 1782 | "parseurl": "~1.3.3", 1783 | "send": "0.18.0" 1784 | }, 1785 | "dependencies": { 1786 | "parseurl": { 1787 | "version": "1.3.3", 1788 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 1789 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 1790 | } 1791 | } 1792 | }, 1793 | "setprototypeof": { 1794 | "version": "1.0.3", 1795 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", 1796 | "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" 1797 | }, 1798 | "sha.js": { 1799 | "version": "2.4.11", 1800 | "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", 1801 | "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", 1802 | "requires": { 1803 | "inherits": "^2.0.1", 1804 | "safe-buffer": "^5.0.1" 1805 | } 1806 | }, 1807 | "side-channel": { 1808 | "version": "1.0.4", 1809 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 1810 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 1811 | "requires": { 1812 | "call-bind": "^1.0.0", 1813 | "get-intrinsic": "^1.0.2", 1814 | "object-inspect": "^1.9.0" 1815 | }, 1816 | "dependencies": { 1817 | "object-inspect": { 1818 | "version": "1.12.2", 1819 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", 1820 | "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" 1821 | } 1822 | } 1823 | }, 1824 | "statuses": { 1825 | "version": "1.4.0", 1826 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", 1827 | "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" 1828 | }, 1829 | "streamsearch": { 1830 | "version": "0.1.2", 1831 | "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", 1832 | "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" 1833 | }, 1834 | "string.prototype.trimend": { 1835 | "version": "1.0.1", 1836 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", 1837 | "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", 1838 | "requires": { 1839 | "define-properties": "^1.1.3", 1840 | "es-abstract": "^1.17.5" 1841 | } 1842 | }, 1843 | "string.prototype.trimstart": { 1844 | "version": "1.0.1", 1845 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", 1846 | "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", 1847 | "requires": { 1848 | "define-properties": "^1.1.3", 1849 | "es-abstract": "^1.17.5" 1850 | } 1851 | }, 1852 | "subscriptions-transport-ws": { 1853 | "version": "0.9.17", 1854 | "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.17.tgz", 1855 | "integrity": "sha512-hNHi2N80PBz4T0V0QhnnsMGvG3XDFDS9mS6BhZ3R12T6EBywC8d/uJscsga0cVO4DKtXCkCRrWm2sOYrbOdhEA==", 1856 | "requires": { 1857 | "backo2": "^1.0.2", 1858 | "eventemitter3": "^3.1.0", 1859 | "iterall": "^1.2.1", 1860 | "symbol-observable": "^1.0.4", 1861 | "ws": "^5.2.0" 1862 | }, 1863 | "dependencies": { 1864 | "iterall": { 1865 | "version": "1.3.0", 1866 | "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", 1867 | "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==" 1868 | }, 1869 | "ws": { 1870 | "version": "5.2.3", 1871 | "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz", 1872 | "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==", 1873 | "requires": { 1874 | "async-limiter": "~1.0.0" 1875 | } 1876 | } 1877 | } 1878 | }, 1879 | "symbol-observable": { 1880 | "version": "1.2.0", 1881 | "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", 1882 | "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" 1883 | }, 1884 | "toidentifier": { 1885 | "version": "1.0.0", 1886 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", 1887 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" 1888 | }, 1889 | "tr46": { 1890 | "version": "0.0.3", 1891 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 1892 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" 1893 | }, 1894 | "ts-invariant": { 1895 | "version": "0.4.4", 1896 | "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", 1897 | "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", 1898 | "requires": { 1899 | "tslib": "^1.9.3" 1900 | } 1901 | }, 1902 | "tslib": { 1903 | "version": "1.13.0", 1904 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", 1905 | "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" 1906 | }, 1907 | "type-is": { 1908 | "version": "1.6.15", 1909 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", 1910 | "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", 1911 | "requires": { 1912 | "media-typer": "0.3.0", 1913 | "mime-types": "2.1.17" 1914 | } 1915 | }, 1916 | "unpipe": { 1917 | "version": "1.0.0", 1918 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1919 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 1920 | }, 1921 | "util.promisify": { 1922 | "version": "1.0.1", 1923 | "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", 1924 | "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", 1925 | "requires": { 1926 | "define-properties": "^1.1.3", 1927 | "es-abstract": "^1.17.2", 1928 | "has-symbols": "^1.0.1", 1929 | "object.getownpropertydescriptors": "^2.1.0" 1930 | } 1931 | }, 1932 | "utils-merge": { 1933 | "version": "1.0.1", 1934 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 1935 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 1936 | }, 1937 | "uuid": { 1938 | "version": "3.2.1", 1939 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", 1940 | "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" 1941 | }, 1942 | "vary": { 1943 | "version": "1.1.2", 1944 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 1945 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 1946 | }, 1947 | "webidl-conversions": { 1948 | "version": "3.0.1", 1949 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 1950 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" 1951 | }, 1952 | "whatwg-url": { 1953 | "version": "5.0.0", 1954 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 1955 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 1956 | "requires": { 1957 | "tr46": "~0.0.3", 1958 | "webidl-conversions": "^3.0.0" 1959 | } 1960 | }, 1961 | "ws": { 1962 | "version": "6.2.2", 1963 | "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", 1964 | "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", 1965 | "requires": { 1966 | "async-limiter": "~1.0.0" 1967 | } 1968 | }, 1969 | "xss": { 1970 | "version": "1.0.8", 1971 | "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.8.tgz", 1972 | "integrity": "sha512-3MgPdaXV8rfQ/pNn16Eio6VXYPTkqwa0vc7GkiymmY/DqR1SE/7VPAAVZz1GJsJFrllMYO3RHfEaiUGjab6TNw==", 1973 | "requires": { 1974 | "commander": "^2.20.3", 1975 | "cssfilter": "0.0.10" 1976 | } 1977 | }, 1978 | "yallist": { 1979 | "version": "3.1.1", 1980 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", 1981 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" 1982 | }, 1983 | "zen-observable": { 1984 | "version": "0.7.1", 1985 | "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.7.1.tgz", 1986 | "integrity": "sha512-OI6VMSe0yeqaouIXtedC+F55Sr6r9ppS7+wTbSexkYdHbdt4ctTuPNXP/rwm7GTVI63YBc+EBT0b0tl7YnJLRg==" 1987 | }, 1988 | "zen-observable-ts": { 1989 | "version": "0.8.21", 1990 | "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz", 1991 | "integrity": "sha512-Yj3yXweRc8LdRMrCC8nIc4kkjWecPAUVh0TI0OUrWXx6aX790vLcDlWca6I4vsyCGH3LpWxq0dJRcMOFoVqmeg==", 1992 | "requires": { 1993 | "tslib": "^1.9.3", 1994 | "zen-observable": "^0.8.0" 1995 | }, 1996 | "dependencies": { 1997 | "zen-observable": { 1998 | "version": "0.8.15", 1999 | "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", 2000 | "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==" 2001 | } 2002 | } 2003 | } 2004 | } 2005 | } 2006 | -------------------------------------------------------------------------------- /server/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@graphql-demo/server", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "./server.js", 6 | "scripts": { 7 | "start": "node ./server.js", 8 | "start:rest": "node ./server.js" 9 | }, 10 | "keywords": [], 11 | "author": "Pankaj Patel", 12 | "license": "ISC", 13 | "dependencies": { 14 | "apollo-server-express": "^2.14.2", 15 | "body-parser": "^1.18.2", 16 | "cors": "^2.8.4", 17 | "express": "^4.18.0", 18 | "graphql": "^0.13.0", 19 | "graphql-tools": "^2.21.0", 20 | "node-fetch": "^2.6.7", 21 | "uuid": "^3.2.1" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /server/resolvers.js: -------------------------------------------------------------------------------- 1 | const uuid = require('uuid/v4'); 2 | 3 | // Some fake data 4 | const users = require('./users'); 5 | 6 | const friendsMapper = id => (Object.assign( 7 | {}, 8 | users[id], 9 | { friends: users[id].friends.map(i => users[i]) } 10 | )); 11 | 12 | // The resolvers 13 | module.exports = { 14 | Query: { 15 | users: () => Object.values(users).map(u => friendsMapper(u.id)), 16 | user: (_, {id}) => friendsMapper(id), 17 | }, 18 | Mutation: { 19 | addUser: (_, data) => { 20 | const uid = uuid(); 21 | users[uid] = Object.assign({}, data, {id: uid}) 22 | return friendsMapper(uid); 23 | } 24 | } 25 | }; 26 | -------------------------------------------------------------------------------- /server/schema.js: -------------------------------------------------------------------------------- 1 | module.exports = ` 2 | type Mutation { 3 | addUser(first: String, last: String, email: String, picture: String, friends: [String]): User 4 | } 5 | type Query { 6 | users: [User] 7 | user(id: String!): User 8 | } 9 | type User { 10 | id: String! 11 | fullName: String 12 | name: Name 13 | email: String! 14 | friends: [User] 15 | } 16 | type Name { 17 | first: String 18 | last: String 19 | } 20 | `; 21 | -------------------------------------------------------------------------------- /server/server.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const bodyParser = require('body-parser'); 3 | const { graphqlExpress, graphiqlExpress } = require('apollo-server-express'); 4 | const { makeExecutableSchema } = require('graphql-tools'); 5 | const cors = require('cors') 6 | 7 | 8 | // The GraphQL schema in string form 9 | const typeDefs = require('./schema'); 10 | 11 | // The resolvers 12 | const resolvers = require('./resolvers'); 13 | 14 | // Put together a schema 15 | const schema = makeExecutableSchema({ 16 | typeDefs, 17 | resolvers, 18 | }); 19 | 20 | // Initialize the app 21 | const app = express(); 22 | 23 | // enable CORS 24 | app.use(cors()); 25 | 26 | // The GraphQL endpoint 27 | app.use('/graphql', bodyParser.json(), graphqlExpress({ schema })); 28 | 29 | // GraphiQL, a visual editor for queries 30 | app.use('/graphiql', graphiqlExpress({ endpointURL: '/graphql' })); 31 | 32 | // Start the server 33 | app.listen(3000, () => { 34 | console.log('Go to http://localhost:3000/graphiql to run queries!'); 35 | }); 36 | -------------------------------------------------------------------------------- /server/users.json: -------------------------------------------------------------------------------- 1 | { 2 | "5a826fdf27256fa9ba444cd4": { 3 | "id": "5a826fdf27256fa9ba444cd4", 4 | "email": "nancy.palmer@example.com", 5 | "fullName": "Nancy Palmer", 6 | "name": { 7 | "last": "Palmer", 8 | "first": "Nancy" 9 | }, 10 | "picture": "http://placehold.it/32x32", 11 | "friends": [ 12 | "5a826fdf50f698c2d9c492ca", 13 | "5a826fdf40b7d805ca2d6e75", 14 | "5a826fdf066dca8b5f7d127a", 15 | "5a826fdf27256fa9ba444cd4", 16 | "5a826fdf6f0122089221a930", 17 | "5a826fdf50f698c2d9c492ca", 18 | "5a826fdf6f0122089221a930", 19 | "5a826fdf40b7d805ca2d6e75" 20 | ] 21 | }, 22 | "5a826fdfc3cdf1690c71e00f": { 23 | "id": "5a826fdfc3cdf1690c71e00f", 24 | "email": "rebekah.hernandez@example.com", 25 | "fullName": "Rebekah Hernandez", 26 | "name": { 27 | "last": "Hernandez", 28 | "first": "Rebekah" 29 | }, 30 | "picture": "http://placehold.it/32x32", 31 | "friends": [ 32 | "5a826fdf40b7d805ca2d6e75", 33 | "5a826fdf40b7d805ca2d6e75", 34 | "5a826fdf27256fa9ba444cd4", 35 | "5a826fdf6f0122089221a930", 36 | "5a826fdf2edf272683abe3ca", 37 | "5a826fdf50f698c2d9c492ca", 38 | "5a826fdf6f0122089221a930", 39 | "5a826fdf6f0122089221a930", 40 | "5a826fdf066dca8b5f7d127a" 41 | ] 42 | }, 43 | "5a826fdf9856ad6503d728d5": { 44 | "id": "5a826fdf9856ad6503d728d5", 45 | "email": "stanton.hansen@example.com", 46 | "fullName": "Stanton Hansen", 47 | "name": { 48 | "last": "Hansen", 49 | "first": "Stanton" 50 | }, 51 | "picture": "http://placehold.it/32x32", 52 | "friends": [ 53 | "5a826fdf0d054a6fab7bb067", 54 | "5a826fdf50f698c2d9c492ca", 55 | "5a826fdf0d054a6fab7bb067" 56 | ] 57 | }, 58 | "5a826fdf0d054a6fab7bb067": { 59 | "id": "5a826fdf0d054a6fab7bb067", 60 | "email": "barr.wolf@example.com", 61 | "fullName": "Barr Wolf", 62 | "name": { 63 | "last": "Wolf", 64 | "first": "Barr" 65 | }, 66 | "picture": "http://placehold.it/32x32", 67 | "friends": [ 68 | "5a826fdf40b7d805ca2d6e75", 69 | "5a826fdf40b7d805ca2d6e75" 70 | ] 71 | }, 72 | "5a826fdf50f698c2d9c492ca": { 73 | "id": "5a826fdf50f698c2d9c492ca", 74 | "email": "hayden.smith@example.com", 75 | "fullName": "Hayden Smith", 76 | "name": { 77 | "last": "Smith", 78 | "first": "Hayden" 79 | }, 80 | "picture": "http://placehold.it/32x32", 81 | "friends": [ 82 | "5a826fdf50f698c2d9c492ca", 83 | "5a826fdfc3cdf1690c71e00f", 84 | "5a826fdf2edf272683abe3ca", 85 | "5a826fdf066dca8b5f7d127a", 86 | "5a826fdf6f0122089221a930" 87 | ] 88 | }, 89 | "5a826fdf066dca8b5f7d127a": { 90 | "id": "5a826fdf066dca8b5f7d127a", 91 | "email": "russell.sims@example.com", 92 | "fullName": "Russell Sims", 93 | "name": { 94 | "last": "Sims", 95 | "first": "Russell" 96 | }, 97 | "picture": "http://placehold.it/32x32", 98 | "friends": [ 99 | "5a826fdf9856ad6503d728d5", 100 | "5a826fdf2edf272683abe3ca", 101 | "5a826fdf066dca8b5f7d127a", 102 | "5a826fdf066dca8b5f7d127a", 103 | "5a826fdfc3cdf1690c71e00f", 104 | "5a826fdf50f698c2d9c492ca" 105 | ] 106 | }, 107 | "5a826fdfa4c1ca0d27881218": { 108 | "id": "5a826fdfa4c1ca0d27881218", 109 | "email": "hazel.rodriguez@example.com", 110 | "fullName": "Hazel Rodriguez", 111 | "name": { 112 | "last": "Rodriguez", 113 | "first": "Hazel" 114 | }, 115 | "picture": "http://placehold.it/32x32", 116 | "friends": [ 117 | "5a826fdf27256fa9ba444cd4", 118 | "5a826fdf066dca8b5f7d127a", 119 | "5a826fdf9856ad6503d728d5", 120 | "5a826fdfa4c1ca0d27881218", 121 | "5a826fdfc3cdf1690c71e00f", 122 | "5a826fdf27256fa9ba444cd4", 123 | "5a826fdf0d054a6fab7bb067", 124 | "5a826fdf50f698c2d9c492ca" 125 | ] 126 | }, 127 | "5a826fdf40b7d805ca2d6e75": { 128 | "id": "5a826fdf40b7d805ca2d6e75", 129 | "email": "kent.clemons@example.com", 130 | "fullName": "Kent Clemons", 131 | "name": { 132 | "last": "Clemons", 133 | "first": "Kent" 134 | }, 135 | "picture": "http://placehold.it/32x32", 136 | "friends": [ 137 | "5a826fdfc3cdf1690c71e00f", 138 | "5a826fdf27256fa9ba444cd4", 139 | "5a826fdf6f0122089221a930", 140 | "5a826fdf0d054a6fab7bb067", 141 | "5a826fdf066dca8b5f7d127a" 142 | ] 143 | }, 144 | "5a826fdf2edf272683abe3ca": { 145 | "id": "5a826fdf2edf272683abe3ca", 146 | "email": "hughes.mcguire@example.com", 147 | "fullName": "Hughes Mcguire", 148 | "name": { 149 | "last": "Mcguire", 150 | "first": "Hughes" 151 | }, 152 | "picture": "http://placehold.it/32x32", 153 | "friends": [ 154 | "5a826fdfc3cdf1690c71e00f" 155 | ] 156 | }, 157 | "5a826fdf6f0122089221a930": { 158 | "id": "5a826fdf6f0122089221a930", 159 | "email": "maxine.bird@example.com", 160 | "fullName": "Maxine Bird", 161 | "name": { 162 | "last": "Bird", 163 | "first": "Maxine" 164 | }, 165 | "picture": "http://placehold.it/32x32", 166 | "friends": [ 167 | "5a826fdf27256fa9ba444cd4", 168 | "5a826fdf2edf272683abe3ca" 169 | ] 170 | } 171 | } 172 | --------------------------------------------------------------------------------