├── .gitignore ├── README.md ├── clientUrls.js ├── index.html ├── index.js ├── oAuthController.js ├── package-lock.json ├── package.json └── style.css /.gitignore: -------------------------------------------------------------------------------- 1 | .vscode 2 | node_modules 3 | .env 4 | keys.js -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # OAuth With Express 2 | (Also Without Passport) 3 | 4 | ![Six Links To Various OAuth Services](https://i.imgur.com/7UH6NRy.png) 5 | 6 | To get all the OAuth links working, you'll have to create a keys.js file in the root directory with your own ID's and secrets: 7 | 8 | ```javascript 9 | const keys = { 10 | GITHUB_ID: '', 11 | GITHUB_SECRET: '', 12 | GOOGLE_ID: '', 13 | GOOGLE_SECRET: '', 14 | INSTAGRAM_ID: '', 15 | INSTAGRAM_SECRET: '', 16 | FACEBOOK_ID: '', 17 | FACEBOOK_SECRET: '', 18 | LINKEDIN_ID: '', 19 | LINKEDIN_SECRET: '', 20 | REDDIT_ID: '', 21 | REDDIT_SECRET: '' 22 | }; 23 | 24 | module.exports = keys; 25 | ``` 26 | 27 | I tried implementing Twitter and Tumblr but they seemed to be much more difficult to get working. If anyone wants to contribute that'd be great! -------------------------------------------------------------------------------- /clientUrls.js: -------------------------------------------------------------------------------- 1 | const redirectUri = 'http%3A%2F%2Flocalhost%3A3000%2Fauth%2F'; 2 | //http://localhost:3000/auth/ 3 | 4 | const urls = { 5 | 6 | github: `https://github.com/login/oauth/authorize? 7 | scope=user:email& 8 | client_id=${keys.GITHUB_ID}` 9 | .replace(/\s/g, ''), 10 | 11 | google: `https://accounts.google.com/o/oauth2/v2/auth? 12 | client_id=${keys.GOOGLE_ID}& 13 | response_type=code& 14 | scope=openid%20profile%20email& 15 | redirect_uri=${redirectUri}google` 16 | .replace(/\s/g, ''), 17 | 18 | instagram: `https://api.instagram.com/oauth/authorize/? 19 | client_id=${keys.INSTAGRAM_ID}& 20 | redirect_uri=${redirectUri}instagram& 21 | response_type=code` 22 | .replace(/\s/g, ''), 23 | 24 | facebook: `https://www.facebook.com/v2.11/dialog/oauth? 25 | client_id=${keys.FACEBOOK_ID}& 26 | redirect_uri=${redirectUri}facebook& 27 | response_type=code` 28 | .replace(/\s/g, ''), 29 | 30 | linkedin: `https://www.linkedin.com/oauth/v2/authorization? 31 | client_id=${keys.LINKEDIN_ID}& 32 | redirect_uri=${redirectUri}linkedin& 33 | scope=r_basicprofile%20r_emailaddress& 34 | state=${(Math.random() + 1).toString(36).substring(7)}& 35 | response_type=code` 36 | .replace(/\s/g, ''), 37 | 38 | reddit: `https://www.reddit.com/api/v1/authorize? 39 | client_id=${keys.REDDIT_ID}& 40 | redirect_uri=${redirectUri}reddit& 41 | scope=identity& 42 | duration=temporary& 43 | state=${(Math.random() + 1).toString(36).substring(7)}& 44 | response_type=code` 45 | .replace(/\s/g, '') 46 | } 47 | 48 | document.querySelector('#github').href = urls.github; 49 | document.querySelector('#google').href = urls.google; 50 | document.querySelector('#instagram').href = urls.instagram; 51 | document.querySelector('#facebook').href = urls.facebook; 52 | document.querySelector('#linkedin').href = urls.linkedin; 53 | document.querySelector('#reddit').href = urls.reddit; 54 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | OAuth With Express 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | OAuth With Express 16 | 17 | 18 | 22 | 23 | 24 | 28 | 29 | 30 | 34 | 35 | 36 | 40 | 41 | 42 | 46 | 47 | 48 | 52 | 53 |
54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const app = express(); 3 | const path = require('path'); 4 | const oAuthController = require('./oAuthController'); 5 | 6 | app.use(express.static(path.resolve(__dirname))); 7 | 8 | app.get('/auth/github', oAuthController.github, (req, res) => { 9 | res.status(200).send(res.locals.user); 10 | }); 11 | 12 | app.get('/auth/google', oAuthController.google, (req, res) => { 13 | res.status(200).send(res.locals.user); 14 | }); 15 | 16 | app.get('/auth/instagram', oAuthController.instagram, (req, res) => { 17 | res.status(200).send(res.locals.user); 18 | }); 19 | 20 | app.get('/auth/facebook', oAuthController.facebook, (req, res) => { 21 | res.status(200).send(res.locals.user); 22 | }); 23 | 24 | app.get('/auth/linkedin', oAuthController.linkedin, (req, res) => { 25 | res.status(200).send(res.locals.user); 26 | }); 27 | 28 | app.get('/auth/reddit', oAuthController.reddit, (req, res) => { 29 | res.status(200).send(res.locals.user); 30 | }); 31 | 32 | app.listen(3000, () => console.log('Server Connected')); -------------------------------------------------------------------------------- /oAuthController.js: -------------------------------------------------------------------------------- 1 | const request = require('request'); 2 | const jwt = require('jsonwebtoken'); 3 | const keys = require('./keys'); 4 | 5 | const redirectUri = 'http://localhost:3000/auth/'; 6 | 7 | const OAuthController = { 8 | github: (req, res, next) => { 9 | const authCode = req.query.code; 10 | const tokenUri = `https://github.com/login/oauth/access_token? 11 | client_id=${keys.GITHUB_ID}& 12 | client_secret=${keys.GITHUB_SECRET}& 13 | code=${authCode}& 14 | accept=json` 15 | .replace(/\s/g, ''); 16 | 17 | request.post(tokenUri, (error, response, body) => { 18 | const accessToken = body.split('&')[0].split('=')[1]; 19 | const options = { 20 | url: `https://api.github.com/user?access_token=${accessToken}`, 21 | //github oauth requires your own github handle here 22 | headers: { 'User-Agent': 'didrio' } 23 | }; 24 | 25 | request.get(options, (error, response, body) => { 26 | body = JSON.parse(body); 27 | res.locals.user = {}; 28 | res.locals.user.email = body.email; 29 | res.locals.user.id = String(body.id); 30 | res.locals.user.handle = body.login; 31 | res.locals.user.name = body.name; 32 | res.locals.user.avatar = body.avatar_url; 33 | next(); 34 | }); 35 | }); 36 | }, 37 | 38 | google: (req, res, next) => { 39 | const authCode = req.query.code; 40 | const tokenUri = `https://www.googleapis.com/oauth2/v4/token? 41 | code=${authCode}& 42 | client_id=${keys.GOOGLE_ID}& 43 | client_secret=${keys.GOOGLE_SECRET}& 44 | redirect_uri=${redirectUri}google& 45 | grant_type=authorization_code` 46 | .replace(/\s/g, ''); 47 | 48 | request.post(tokenUri, (error, response, body) => { 49 | const idToken = JSON.parse(body)['id_token']; 50 | const payload = jwt.decode(idToken); 51 | const googleId = payload.sub; 52 | 53 | const accessToken = JSON.parse(body)['access_token']; 54 | 55 | const apiUri = `https://www.googleapis.com/plus/v1/people/${googleId}? 56 | access_token=${accessToken}` 57 | .replace(/\s/g, ''); 58 | 59 | request.get(apiUri, (error, response, body) => { 60 | body = JSON.parse(body); 61 | res.locals.user = {}; 62 | res.locals.user.email = body.emails[0].value; 63 | res.locals.user.id = body.id; 64 | res.locals.user.name = body.displayName; 65 | res.locals.user.avatar = body.image.url; 66 | next(); 67 | }); 68 | }); 69 | }, 70 | 71 | instagram: (req, res, next) => { 72 | const authCode = req.query.code; 73 | const formData = { 74 | client_id: keys.INSTAGRAM_ID, 75 | client_secret: keys.INSTAGRAM_SECRET, 76 | grant_type: 'authorization_code', 77 | redirect_uri: `${redirectUri}instagram`, 78 | code: authCode 79 | }; 80 | const tokenUri = 'https://api.instagram.com/oauth/access_token'; 81 | 82 | request.post({ url: tokenUri, formData }, (error, response, body) => { 83 | body = JSON.parse(body); 84 | 85 | const accessToken = body['access_token']; 86 | 87 | const apiUri = `https://api.instagram.com/v1/users/self/? 88 | access_token=${accessToken}` 89 | .replace(/\s/g, ''); 90 | 91 | request.get(apiUri, (error, response, body) => { 92 | body = JSON.parse(body); 93 | res.locals.user = {}; 94 | res.locals.user.id = body.data.id; 95 | res.locals.user.handle = body.data.username; 96 | res.locals.user.name = body.data.full_name; 97 | res.locals.user.avatar = body.data.profile_picture; 98 | next(); 99 | }); 100 | }); 101 | }, 102 | 103 | facebook: (req, res, next) => { 104 | const authCode = req.query.code; 105 | const tokenUri = `https://graph.facebook.com/v2.11/oauth/access_token? 106 | client_id=${keys.FACEBOOK_ID}& 107 | redirect_uri=${redirectUri}facebook& 108 | client_secret=${keys.FACEBOOK_SECRET}& 109 | code=${authCode}` 110 | .replace(/\s/g, ''); 111 | 112 | request.get(tokenUri, (error, response, body) => { 113 | body = JSON.parse(body); 114 | 115 | const accessToken = body['access_token']; 116 | 117 | const apiUri = `https://graph.facebook.com/me? 118 | fields=id,name,picture,email& 119 | access_token=${accessToken}` 120 | .replace(/\s/g, ''); 121 | 122 | request.get(apiUri, (error, response, body) => { 123 | body = JSON.parse(body); 124 | console.log(body); 125 | res.locals.user = {}; 126 | res.locals.user.id = body.id; 127 | res.locals.user.name = body.name; 128 | res.locals.user.avatar = body.picture.data.url; 129 | res.locals.user.email = body.email; 130 | next(); 131 | }); 132 | }); 133 | }, 134 | 135 | linkedin: (req, res, next) => { 136 | const authCode = req.query.code; 137 | const tokenUri = `https://www.linkedin.com/oauth/v2/accessToken? 138 | grant_type=authorization_code& 139 | client_id=${keys.LINKEDIN_ID}& 140 | redirect_uri=${redirectUri}linkedin& 141 | client_secret=${keys.LINKEDIN_SECRET}& 142 | code=${authCode}` 143 | .replace(/\s/g, ''); 144 | 145 | request.post(tokenUri, (error, response, body) => { 146 | body = JSON.parse(body); 147 | 148 | const accessToken = body['access_token']; 149 | 150 | const options = { 151 | url: 'https://api.linkedin.com/v1/people/~:(id,formatted-name,email-address,picture-url)?format=json', 152 | headers: { 'Authorization': `Bearer ${accessToken}` } 153 | }; 154 | 155 | request.get(options, (error, response, body) => { 156 | body = JSON.parse(body); 157 | res.locals.user = {}; 158 | res.locals.user.id = body.id; 159 | res.locals.user.email = body.emailAddress; 160 | res.locals.user.name = body.formattedName; 161 | res.locals.user.avatar = body.pictureUrl; 162 | next(); 163 | }); 164 | }); 165 | }, 166 | 167 | reddit: (req, res, next) => { 168 | const authCode = req.query.code; 169 | const authorization = new Buffer(`${keys.REDDIT_ID}:${keys.REDDIT_SECRET}`).toString('base64'); 170 | 171 | const formData = { 172 | grant_type: 'authorization_code', 173 | redirect_uri: `${redirectUri}reddit`, 174 | code: authCode 175 | }; 176 | 177 | const options = { 178 | url: 'https://www.reddit.com/api/v1/access_token', 179 | headers: { 'Authorization': `Basic ${authorization}` }, 180 | formData 181 | }; 182 | 183 | request.post(options, (error, response, body) => { 184 | body = JSON.parse(body); 185 | const accessToken = body['access_token']; 186 | 187 | const options = { 188 | url: 'https://oauth.reddit.com/api/v1/me', 189 | headers: { 190 | 'Authorization': `Bearer ${accessToken}`, 191 | 'User-Agent': 'desktop:io.didr:v1.0.0 (by /u/didrio)' 192 | } 193 | }; 194 | 195 | request.get(options, (error, response, body) => { 196 | body = JSON.parse(body); 197 | res.locals.user = {}; 198 | res.locals.user.id = body.id; 199 | res.locals.user.handle = body.name; 200 | res.locals.user.avatar = body.icon_img; 201 | next(); 202 | }); 203 | }); 204 | } 205 | }; 206 | 207 | module.exports = OAuthController; -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "oauth", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "abbrev": { 8 | "version": "1.1.1", 9 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 10 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" 11 | }, 12 | "accepts": { 13 | "version": "1.3.4", 14 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", 15 | "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", 16 | "requires": { 17 | "mime-types": "2.1.17", 18 | "negotiator": "0.6.1" 19 | } 20 | }, 21 | "ajv": { 22 | "version": "5.5.1", 23 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.1.tgz", 24 | "integrity": "sha1-s4u4h22ehr7plJVqBOch6IskjrI=", 25 | "requires": { 26 | "co": "4.6.0", 27 | "fast-deep-equal": "1.0.0", 28 | "fast-json-stable-stringify": "2.0.0", 29 | "json-schema-traverse": "0.3.1" 30 | } 31 | }, 32 | "ansi-align": { 33 | "version": "2.0.0", 34 | "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", 35 | "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", 36 | "requires": { 37 | "string-width": "2.1.1" 38 | } 39 | }, 40 | "ansi-regex": { 41 | "version": "3.0.0", 42 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 43 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" 44 | }, 45 | "ansi-styles": { 46 | "version": "3.2.0", 47 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", 48 | "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", 49 | "requires": { 50 | "color-convert": "1.9.1" 51 | } 52 | }, 53 | "anymatch": { 54 | "version": "1.3.2", 55 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", 56 | "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", 57 | "requires": { 58 | "micromatch": "2.3.11", 59 | "normalize-path": "2.1.1" 60 | } 61 | }, 62 | "arr-diff": { 63 | "version": "2.0.0", 64 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", 65 | "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", 66 | "requires": { 67 | "arr-flatten": "1.1.0" 68 | } 69 | }, 70 | "arr-flatten": { 71 | "version": "1.1.0", 72 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", 73 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" 74 | }, 75 | "array-flatten": { 76 | "version": "1.1.1", 77 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 78 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 79 | }, 80 | "array-unique": { 81 | "version": "0.2.1", 82 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", 83 | "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" 84 | }, 85 | "asn1": { 86 | "version": "0.2.3", 87 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", 88 | "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" 89 | }, 90 | "assert-plus": { 91 | "version": "1.0.0", 92 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", 93 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" 94 | }, 95 | "async-each": { 96 | "version": "1.0.1", 97 | "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", 98 | "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" 99 | }, 100 | "asynckit": { 101 | "version": "0.4.0", 102 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 103 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" 104 | }, 105 | "aws-sign2": { 106 | "version": "0.7.0", 107 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", 108 | "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" 109 | }, 110 | "aws4": { 111 | "version": "1.6.0", 112 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", 113 | "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" 114 | }, 115 | "balanced-match": { 116 | "version": "1.0.0", 117 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 118 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" 119 | }, 120 | "base64url": { 121 | "version": "2.0.0", 122 | "resolved": "https://registry.npmjs.org/base64url/-/base64url-2.0.0.tgz", 123 | "integrity": "sha1-6sFuA+oUOO/5Qj1puqNiYu0fcLs=" 124 | }, 125 | "bcrypt-pbkdf": { 126 | "version": "1.0.1", 127 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", 128 | "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", 129 | "optional": true, 130 | "requires": { 131 | "tweetnacl": "0.14.5" 132 | } 133 | }, 134 | "binary-extensions": { 135 | "version": "1.11.0", 136 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", 137 | "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=" 138 | }, 139 | "body-parser": { 140 | "version": "1.18.2", 141 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", 142 | "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", 143 | "requires": { 144 | "bytes": "3.0.0", 145 | "content-type": "1.0.4", 146 | "debug": "2.6.9", 147 | "depd": "1.1.1", 148 | "http-errors": "1.6.2", 149 | "iconv-lite": "0.4.19", 150 | "on-finished": "2.3.0", 151 | "qs": "6.5.1", 152 | "raw-body": "2.3.2", 153 | "type-is": "1.6.15" 154 | } 155 | }, 156 | "boom": { 157 | "version": "4.3.1", 158 | "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", 159 | "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", 160 | "requires": { 161 | "hoek": "4.2.0" 162 | } 163 | }, 164 | "boxen": { 165 | "version": "1.3.0", 166 | "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", 167 | "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", 168 | "requires": { 169 | "ansi-align": "2.0.0", 170 | "camelcase": "4.1.0", 171 | "chalk": "2.3.0", 172 | "cli-boxes": "1.0.0", 173 | "string-width": "2.1.1", 174 | "term-size": "1.2.0", 175 | "widest-line": "2.0.0" 176 | } 177 | }, 178 | "brace-expansion": { 179 | "version": "1.1.8", 180 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", 181 | "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", 182 | "requires": { 183 | "balanced-match": "1.0.0", 184 | "concat-map": "0.0.1" 185 | } 186 | }, 187 | "braces": { 188 | "version": "1.8.5", 189 | "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", 190 | "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", 191 | "requires": { 192 | "expand-range": "1.8.2", 193 | "preserve": "0.2.0", 194 | "repeat-element": "1.1.2" 195 | } 196 | }, 197 | "buffer-equal-constant-time": { 198 | "version": "1.0.1", 199 | "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", 200 | "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" 201 | }, 202 | "bytes": { 203 | "version": "3.0.0", 204 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", 205 | "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" 206 | }, 207 | "camelcase": { 208 | "version": "4.1.0", 209 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", 210 | "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" 211 | }, 212 | "capture-stack-trace": { 213 | "version": "1.0.0", 214 | "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", 215 | "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=" 216 | }, 217 | "caseless": { 218 | "version": "0.12.0", 219 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 220 | "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" 221 | }, 222 | "chalk": { 223 | "version": "2.3.0", 224 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", 225 | "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", 226 | "requires": { 227 | "ansi-styles": "3.2.0", 228 | "escape-string-regexp": "1.0.5", 229 | "supports-color": "4.5.0" 230 | } 231 | }, 232 | "chokidar": { 233 | "version": "1.7.0", 234 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", 235 | "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", 236 | "requires": { 237 | "anymatch": "1.3.2", 238 | "async-each": "1.0.1", 239 | "fsevents": "1.1.3", 240 | "glob-parent": "2.0.0", 241 | "inherits": "2.0.3", 242 | "is-binary-path": "1.0.1", 243 | "is-glob": "2.0.1", 244 | "path-is-absolute": "1.0.1", 245 | "readdirp": "2.1.0" 246 | } 247 | }, 248 | "cli-boxes": { 249 | "version": "1.0.0", 250 | "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", 251 | "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=" 252 | }, 253 | "co": { 254 | "version": "4.6.0", 255 | "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", 256 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" 257 | }, 258 | "color-convert": { 259 | "version": "1.9.1", 260 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", 261 | "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", 262 | "requires": { 263 | "color-name": "1.1.3" 264 | } 265 | }, 266 | "color-name": { 267 | "version": "1.1.3", 268 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 269 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 270 | }, 271 | "combined-stream": { 272 | "version": "1.0.5", 273 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", 274 | "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", 275 | "requires": { 276 | "delayed-stream": "1.0.0" 277 | } 278 | }, 279 | "concat-map": { 280 | "version": "0.0.1", 281 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 282 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 283 | }, 284 | "configstore": { 285 | "version": "3.1.1", 286 | "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.1.tgz", 287 | "integrity": "sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw==", 288 | "requires": { 289 | "dot-prop": "4.2.0", 290 | "graceful-fs": "4.1.11", 291 | "make-dir": "1.1.0", 292 | "unique-string": "1.0.0", 293 | "write-file-atomic": "2.3.0", 294 | "xdg-basedir": "3.0.0" 295 | } 296 | }, 297 | "content-disposition": { 298 | "version": "0.5.2", 299 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", 300 | "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" 301 | }, 302 | "content-type": { 303 | "version": "1.0.4", 304 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 305 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 306 | }, 307 | "cookie": { 308 | "version": "0.3.1", 309 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", 310 | "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" 311 | }, 312 | "cookie-signature": { 313 | "version": "1.0.6", 314 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 315 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 316 | }, 317 | "core-util-is": { 318 | "version": "1.0.2", 319 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 320 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 321 | }, 322 | "create-error-class": { 323 | "version": "3.0.2", 324 | "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", 325 | "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", 326 | "requires": { 327 | "capture-stack-trace": "1.0.0" 328 | } 329 | }, 330 | "cross-spawn": { 331 | "version": "5.1.0", 332 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", 333 | "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", 334 | "requires": { 335 | "lru-cache": "4.1.1", 336 | "shebang-command": "1.2.0", 337 | "which": "1.3.0" 338 | } 339 | }, 340 | "cryptiles": { 341 | "version": "3.1.2", 342 | "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", 343 | "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", 344 | "requires": { 345 | "boom": "5.2.0" 346 | }, 347 | "dependencies": { 348 | "boom": { 349 | "version": "5.2.0", 350 | "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", 351 | "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", 352 | "requires": { 353 | "hoek": "4.2.0" 354 | } 355 | } 356 | } 357 | }, 358 | "crypto-random-string": { 359 | "version": "1.0.0", 360 | "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", 361 | "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" 362 | }, 363 | "dashdash": { 364 | "version": "1.14.1", 365 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", 366 | "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", 367 | "requires": { 368 | "assert-plus": "1.0.0" 369 | } 370 | }, 371 | "debug": { 372 | "version": "2.6.9", 373 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 374 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 375 | "requires": { 376 | "ms": "2.0.0" 377 | } 378 | }, 379 | "deep-extend": { 380 | "version": "0.4.2", 381 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", 382 | "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=" 383 | }, 384 | "delayed-stream": { 385 | "version": "1.0.0", 386 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 387 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" 388 | }, 389 | "depd": { 390 | "version": "1.1.1", 391 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", 392 | "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" 393 | }, 394 | "destroy": { 395 | "version": "1.0.4", 396 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 397 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 398 | }, 399 | "dot-prop": { 400 | "version": "4.2.0", 401 | "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", 402 | "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", 403 | "requires": { 404 | "is-obj": "1.0.1" 405 | } 406 | }, 407 | "duplexer": { 408 | "version": "0.1.1", 409 | "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", 410 | "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" 411 | }, 412 | "duplexer3": { 413 | "version": "0.1.4", 414 | "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", 415 | "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" 416 | }, 417 | "ecc-jsbn": { 418 | "version": "0.1.1", 419 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", 420 | "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", 421 | "optional": true, 422 | "requires": { 423 | "jsbn": "0.1.1" 424 | } 425 | }, 426 | "ecdsa-sig-formatter": { 427 | "version": "1.0.9", 428 | "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz", 429 | "integrity": "sha1-S8kmJ07Dtau1AW5+HWCSGsJisqE=", 430 | "requires": { 431 | "base64url": "2.0.0", 432 | "safe-buffer": "5.1.1" 433 | } 434 | }, 435 | "ee-first": { 436 | "version": "1.1.1", 437 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 438 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 439 | }, 440 | "encodeurl": { 441 | "version": "1.0.1", 442 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", 443 | "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=" 444 | }, 445 | "es6-promise": { 446 | "version": "3.3.1", 447 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", 448 | "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" 449 | }, 450 | "escape-html": { 451 | "version": "1.0.3", 452 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 453 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 454 | }, 455 | "escape-string-regexp": { 456 | "version": "1.0.5", 457 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 458 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 459 | }, 460 | "etag": { 461 | "version": "1.8.1", 462 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 463 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" 464 | }, 465 | "event-stream": { 466 | "version": "3.3.4", 467 | "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", 468 | "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", 469 | "requires": { 470 | "duplexer": "0.1.1", 471 | "from": "0.1.7", 472 | "map-stream": "0.1.0", 473 | "pause-stream": "0.0.11", 474 | "split": "0.3.3", 475 | "stream-combiner": "0.0.4", 476 | "through": "2.3.8" 477 | } 478 | }, 479 | "execa": { 480 | "version": "0.7.0", 481 | "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", 482 | "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", 483 | "requires": { 484 | "cross-spawn": "5.1.0", 485 | "get-stream": "3.0.0", 486 | "is-stream": "1.1.0", 487 | "npm-run-path": "2.0.2", 488 | "p-finally": "1.0.0", 489 | "signal-exit": "3.0.2", 490 | "strip-eof": "1.0.0" 491 | } 492 | }, 493 | "expand-brackets": { 494 | "version": "0.1.5", 495 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", 496 | "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", 497 | "requires": { 498 | "is-posix-bracket": "0.1.1" 499 | } 500 | }, 501 | "expand-range": { 502 | "version": "1.8.2", 503 | "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", 504 | "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", 505 | "requires": { 506 | "fill-range": "2.2.3" 507 | } 508 | }, 509 | "express": { 510 | "version": "4.16.2", 511 | "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", 512 | "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=", 513 | "requires": { 514 | "accepts": "1.3.4", 515 | "array-flatten": "1.1.1", 516 | "body-parser": "1.18.2", 517 | "content-disposition": "0.5.2", 518 | "content-type": "1.0.4", 519 | "cookie": "0.3.1", 520 | "cookie-signature": "1.0.6", 521 | "debug": "2.6.9", 522 | "depd": "1.1.1", 523 | "encodeurl": "1.0.1", 524 | "escape-html": "1.0.3", 525 | "etag": "1.8.1", 526 | "finalhandler": "1.1.0", 527 | "fresh": "0.5.2", 528 | "merge-descriptors": "1.0.1", 529 | "methods": "1.1.2", 530 | "on-finished": "2.3.0", 531 | "parseurl": "1.3.2", 532 | "path-to-regexp": "0.1.7", 533 | "proxy-addr": "2.0.2", 534 | "qs": "6.5.1", 535 | "range-parser": "1.2.0", 536 | "safe-buffer": "5.1.1", 537 | "send": "0.16.1", 538 | "serve-static": "1.13.1", 539 | "setprototypeof": "1.1.0", 540 | "statuses": "1.3.1", 541 | "type-is": "1.6.15", 542 | "utils-merge": "1.0.1", 543 | "vary": "1.1.2" 544 | } 545 | }, 546 | "extend": { 547 | "version": "3.0.1", 548 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", 549 | "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" 550 | }, 551 | "extglob": { 552 | "version": "0.3.2", 553 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", 554 | "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", 555 | "requires": { 556 | "is-extglob": "1.0.0" 557 | } 558 | }, 559 | "extsprintf": { 560 | "version": "1.3.0", 561 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", 562 | "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" 563 | }, 564 | "fast-deep-equal": { 565 | "version": "1.0.0", 566 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", 567 | "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" 568 | }, 569 | "fast-json-stable-stringify": { 570 | "version": "2.0.0", 571 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", 572 | "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" 573 | }, 574 | "filename-regex": { 575 | "version": "2.0.1", 576 | "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", 577 | "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" 578 | }, 579 | "fill-range": { 580 | "version": "2.2.3", 581 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", 582 | "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", 583 | "requires": { 584 | "is-number": "2.1.0", 585 | "isobject": "2.1.0", 586 | "randomatic": "1.1.7", 587 | "repeat-element": "1.1.2", 588 | "repeat-string": "1.6.1" 589 | } 590 | }, 591 | "finalhandler": { 592 | "version": "1.1.0", 593 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", 594 | "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", 595 | "requires": { 596 | "debug": "2.6.9", 597 | "encodeurl": "1.0.1", 598 | "escape-html": "1.0.3", 599 | "on-finished": "2.3.0", 600 | "parseurl": "1.3.2", 601 | "statuses": "1.3.1", 602 | "unpipe": "1.0.0" 603 | } 604 | }, 605 | "for-in": { 606 | "version": "1.0.2", 607 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", 608 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" 609 | }, 610 | "for-own": { 611 | "version": "0.1.5", 612 | "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", 613 | "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", 614 | "requires": { 615 | "for-in": "1.0.2" 616 | } 617 | }, 618 | "forever-agent": { 619 | "version": "0.6.1", 620 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", 621 | "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" 622 | }, 623 | "form-data": { 624 | "version": "2.3.1", 625 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", 626 | "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", 627 | "requires": { 628 | "asynckit": "0.4.0", 629 | "combined-stream": "1.0.5", 630 | "mime-types": "2.1.17" 631 | } 632 | }, 633 | "forwarded": { 634 | "version": "0.1.2", 635 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", 636 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" 637 | }, 638 | "fresh": { 639 | "version": "0.5.2", 640 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 641 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 642 | }, 643 | "from": { 644 | "version": "0.1.7", 645 | "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", 646 | "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=" 647 | }, 648 | "fsevents": { 649 | "version": "1.1.3", 650 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", 651 | "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", 652 | "optional": true, 653 | "requires": { 654 | "nan": "2.8.0", 655 | "node-pre-gyp": "0.6.39" 656 | }, 657 | "dependencies": { 658 | "abbrev": { 659 | "version": "1.1.0", 660 | "bundled": true, 661 | "optional": true 662 | }, 663 | "ajv": { 664 | "version": "4.11.8", 665 | "bundled": true, 666 | "optional": true, 667 | "requires": { 668 | "co": "4.6.0", 669 | "json-stable-stringify": "1.0.1" 670 | } 671 | }, 672 | "ansi-regex": { 673 | "version": "2.1.1", 674 | "bundled": true 675 | }, 676 | "aproba": { 677 | "version": "1.1.1", 678 | "bundled": true, 679 | "optional": true 680 | }, 681 | "are-we-there-yet": { 682 | "version": "1.1.4", 683 | "bundled": true, 684 | "optional": true, 685 | "requires": { 686 | "delegates": "1.0.0", 687 | "readable-stream": "2.2.9" 688 | } 689 | }, 690 | "asn1": { 691 | "version": "0.2.3", 692 | "bundled": true, 693 | "optional": true 694 | }, 695 | "assert-plus": { 696 | "version": "0.2.0", 697 | "bundled": true, 698 | "optional": true 699 | }, 700 | "asynckit": { 701 | "version": "0.4.0", 702 | "bundled": true, 703 | "optional": true 704 | }, 705 | "aws-sign2": { 706 | "version": "0.6.0", 707 | "bundled": true, 708 | "optional": true 709 | }, 710 | "aws4": { 711 | "version": "1.6.0", 712 | "bundled": true, 713 | "optional": true 714 | }, 715 | "balanced-match": { 716 | "version": "0.4.2", 717 | "bundled": true 718 | }, 719 | "bcrypt-pbkdf": { 720 | "version": "1.0.1", 721 | "bundled": true, 722 | "optional": true, 723 | "requires": { 724 | "tweetnacl": "0.14.5" 725 | } 726 | }, 727 | "block-stream": { 728 | "version": "0.0.9", 729 | "bundled": true, 730 | "requires": { 731 | "inherits": "2.0.3" 732 | } 733 | }, 734 | "boom": { 735 | "version": "2.10.1", 736 | "bundled": true, 737 | "requires": { 738 | "hoek": "2.16.3" 739 | } 740 | }, 741 | "brace-expansion": { 742 | "version": "1.1.7", 743 | "bundled": true, 744 | "requires": { 745 | "balanced-match": "0.4.2", 746 | "concat-map": "0.0.1" 747 | } 748 | }, 749 | "buffer-shims": { 750 | "version": "1.0.0", 751 | "bundled": true 752 | }, 753 | "caseless": { 754 | "version": "0.12.0", 755 | "bundled": true, 756 | "optional": true 757 | }, 758 | "co": { 759 | "version": "4.6.0", 760 | "bundled": true, 761 | "optional": true 762 | }, 763 | "code-point-at": { 764 | "version": "1.1.0", 765 | "bundled": true 766 | }, 767 | "combined-stream": { 768 | "version": "1.0.5", 769 | "bundled": true, 770 | "requires": { 771 | "delayed-stream": "1.0.0" 772 | } 773 | }, 774 | "concat-map": { 775 | "version": "0.0.1", 776 | "bundled": true 777 | }, 778 | "console-control-strings": { 779 | "version": "1.1.0", 780 | "bundled": true 781 | }, 782 | "core-util-is": { 783 | "version": "1.0.2", 784 | "bundled": true 785 | }, 786 | "cryptiles": { 787 | "version": "2.0.5", 788 | "bundled": true, 789 | "requires": { 790 | "boom": "2.10.1" 791 | } 792 | }, 793 | "dashdash": { 794 | "version": "1.14.1", 795 | "bundled": true, 796 | "optional": true, 797 | "requires": { 798 | "assert-plus": "1.0.0" 799 | }, 800 | "dependencies": { 801 | "assert-plus": { 802 | "version": "1.0.0", 803 | "bundled": true, 804 | "optional": true 805 | } 806 | } 807 | }, 808 | "debug": { 809 | "version": "2.6.8", 810 | "bundled": true, 811 | "optional": true, 812 | "requires": { 813 | "ms": "2.0.0" 814 | } 815 | }, 816 | "deep-extend": { 817 | "version": "0.4.2", 818 | "bundled": true, 819 | "optional": true 820 | }, 821 | "delayed-stream": { 822 | "version": "1.0.0", 823 | "bundled": true 824 | }, 825 | "delegates": { 826 | "version": "1.0.0", 827 | "bundled": true, 828 | "optional": true 829 | }, 830 | "detect-libc": { 831 | "version": "1.0.2", 832 | "bundled": true, 833 | "optional": true 834 | }, 835 | "ecc-jsbn": { 836 | "version": "0.1.1", 837 | "bundled": true, 838 | "optional": true, 839 | "requires": { 840 | "jsbn": "0.1.1" 841 | } 842 | }, 843 | "extend": { 844 | "version": "3.0.1", 845 | "bundled": true, 846 | "optional": true 847 | }, 848 | "extsprintf": { 849 | "version": "1.0.2", 850 | "bundled": true 851 | }, 852 | "forever-agent": { 853 | "version": "0.6.1", 854 | "bundled": true, 855 | "optional": true 856 | }, 857 | "form-data": { 858 | "version": "2.1.4", 859 | "bundled": true, 860 | "optional": true, 861 | "requires": { 862 | "asynckit": "0.4.0", 863 | "combined-stream": "1.0.5", 864 | "mime-types": "2.1.15" 865 | } 866 | }, 867 | "fs.realpath": { 868 | "version": "1.0.0", 869 | "bundled": true 870 | }, 871 | "fstream": { 872 | "version": "1.0.11", 873 | "bundled": true, 874 | "requires": { 875 | "graceful-fs": "4.1.11", 876 | "inherits": "2.0.3", 877 | "mkdirp": "0.5.1", 878 | "rimraf": "2.6.1" 879 | } 880 | }, 881 | "fstream-ignore": { 882 | "version": "1.0.5", 883 | "bundled": true, 884 | "optional": true, 885 | "requires": { 886 | "fstream": "1.0.11", 887 | "inherits": "2.0.3", 888 | "minimatch": "3.0.4" 889 | } 890 | }, 891 | "gauge": { 892 | "version": "2.7.4", 893 | "bundled": true, 894 | "optional": true, 895 | "requires": { 896 | "aproba": "1.1.1", 897 | "console-control-strings": "1.1.0", 898 | "has-unicode": "2.0.1", 899 | "object-assign": "4.1.1", 900 | "signal-exit": "3.0.2", 901 | "string-width": "1.0.2", 902 | "strip-ansi": "3.0.1", 903 | "wide-align": "1.1.2" 904 | } 905 | }, 906 | "getpass": { 907 | "version": "0.1.7", 908 | "bundled": true, 909 | "optional": true, 910 | "requires": { 911 | "assert-plus": "1.0.0" 912 | }, 913 | "dependencies": { 914 | "assert-plus": { 915 | "version": "1.0.0", 916 | "bundled": true, 917 | "optional": true 918 | } 919 | } 920 | }, 921 | "glob": { 922 | "version": "7.1.2", 923 | "bundled": true, 924 | "requires": { 925 | "fs.realpath": "1.0.0", 926 | "inflight": "1.0.6", 927 | "inherits": "2.0.3", 928 | "minimatch": "3.0.4", 929 | "once": "1.4.0", 930 | "path-is-absolute": "1.0.1" 931 | } 932 | }, 933 | "graceful-fs": { 934 | "version": "4.1.11", 935 | "bundled": true 936 | }, 937 | "har-schema": { 938 | "version": "1.0.5", 939 | "bundled": true, 940 | "optional": true 941 | }, 942 | "har-validator": { 943 | "version": "4.2.1", 944 | "bundled": true, 945 | "optional": true, 946 | "requires": { 947 | "ajv": "4.11.8", 948 | "har-schema": "1.0.5" 949 | } 950 | }, 951 | "has-unicode": { 952 | "version": "2.0.1", 953 | "bundled": true, 954 | "optional": true 955 | }, 956 | "hawk": { 957 | "version": "3.1.3", 958 | "bundled": true, 959 | "requires": { 960 | "boom": "2.10.1", 961 | "cryptiles": "2.0.5", 962 | "hoek": "2.16.3", 963 | "sntp": "1.0.9" 964 | } 965 | }, 966 | "hoek": { 967 | "version": "2.16.3", 968 | "bundled": true 969 | }, 970 | "http-signature": { 971 | "version": "1.1.1", 972 | "bundled": true, 973 | "optional": true, 974 | "requires": { 975 | "assert-plus": "0.2.0", 976 | "jsprim": "1.4.0", 977 | "sshpk": "1.13.0" 978 | } 979 | }, 980 | "inflight": { 981 | "version": "1.0.6", 982 | "bundled": true, 983 | "requires": { 984 | "once": "1.4.0", 985 | "wrappy": "1.0.2" 986 | } 987 | }, 988 | "inherits": { 989 | "version": "2.0.3", 990 | "bundled": true 991 | }, 992 | "ini": { 993 | "version": "1.3.4", 994 | "bundled": true, 995 | "optional": true 996 | }, 997 | "is-fullwidth-code-point": { 998 | "version": "1.0.0", 999 | "bundled": true, 1000 | "requires": { 1001 | "number-is-nan": "1.0.1" 1002 | } 1003 | }, 1004 | "is-typedarray": { 1005 | "version": "1.0.0", 1006 | "bundled": true, 1007 | "optional": true 1008 | }, 1009 | "isarray": { 1010 | "version": "1.0.0", 1011 | "bundled": true 1012 | }, 1013 | "isstream": { 1014 | "version": "0.1.2", 1015 | "bundled": true, 1016 | "optional": true 1017 | }, 1018 | "jodid25519": { 1019 | "version": "1.0.2", 1020 | "bundled": true, 1021 | "optional": true, 1022 | "requires": { 1023 | "jsbn": "0.1.1" 1024 | } 1025 | }, 1026 | "jsbn": { 1027 | "version": "0.1.1", 1028 | "bundled": true, 1029 | "optional": true 1030 | }, 1031 | "json-schema": { 1032 | "version": "0.2.3", 1033 | "bundled": true, 1034 | "optional": true 1035 | }, 1036 | "json-stable-stringify": { 1037 | "version": "1.0.1", 1038 | "bundled": true, 1039 | "optional": true, 1040 | "requires": { 1041 | "jsonify": "0.0.0" 1042 | } 1043 | }, 1044 | "json-stringify-safe": { 1045 | "version": "5.0.1", 1046 | "bundled": true, 1047 | "optional": true 1048 | }, 1049 | "jsonify": { 1050 | "version": "0.0.0", 1051 | "bundled": true, 1052 | "optional": true 1053 | }, 1054 | "jsprim": { 1055 | "version": "1.4.0", 1056 | "bundled": true, 1057 | "optional": true, 1058 | "requires": { 1059 | "assert-plus": "1.0.0", 1060 | "extsprintf": "1.0.2", 1061 | "json-schema": "0.2.3", 1062 | "verror": "1.3.6" 1063 | }, 1064 | "dependencies": { 1065 | "assert-plus": { 1066 | "version": "1.0.0", 1067 | "bundled": true, 1068 | "optional": true 1069 | } 1070 | } 1071 | }, 1072 | "mime-db": { 1073 | "version": "1.27.0", 1074 | "bundled": true 1075 | }, 1076 | "mime-types": { 1077 | "version": "2.1.15", 1078 | "bundled": true, 1079 | "requires": { 1080 | "mime-db": "1.27.0" 1081 | } 1082 | }, 1083 | "minimatch": { 1084 | "version": "3.0.4", 1085 | "bundled": true, 1086 | "requires": { 1087 | "brace-expansion": "1.1.7" 1088 | } 1089 | }, 1090 | "minimist": { 1091 | "version": "0.0.8", 1092 | "bundled": true 1093 | }, 1094 | "mkdirp": { 1095 | "version": "0.5.1", 1096 | "bundled": true, 1097 | "requires": { 1098 | "minimist": "0.0.8" 1099 | } 1100 | }, 1101 | "ms": { 1102 | "version": "2.0.0", 1103 | "bundled": true, 1104 | "optional": true 1105 | }, 1106 | "node-pre-gyp": { 1107 | "version": "0.6.39", 1108 | "bundled": true, 1109 | "optional": true, 1110 | "requires": { 1111 | "detect-libc": "1.0.2", 1112 | "hawk": "3.1.3", 1113 | "mkdirp": "0.5.1", 1114 | "nopt": "4.0.1", 1115 | "npmlog": "4.1.0", 1116 | "rc": "1.2.1", 1117 | "request": "2.81.0", 1118 | "rimraf": "2.6.1", 1119 | "semver": "5.3.0", 1120 | "tar": "2.2.1", 1121 | "tar-pack": "3.4.0" 1122 | } 1123 | }, 1124 | "nopt": { 1125 | "version": "4.0.1", 1126 | "bundled": true, 1127 | "optional": true, 1128 | "requires": { 1129 | "abbrev": "1.1.0", 1130 | "osenv": "0.1.4" 1131 | } 1132 | }, 1133 | "npmlog": { 1134 | "version": "4.1.0", 1135 | "bundled": true, 1136 | "optional": true, 1137 | "requires": { 1138 | "are-we-there-yet": "1.1.4", 1139 | "console-control-strings": "1.1.0", 1140 | "gauge": "2.7.4", 1141 | "set-blocking": "2.0.0" 1142 | } 1143 | }, 1144 | "number-is-nan": { 1145 | "version": "1.0.1", 1146 | "bundled": true 1147 | }, 1148 | "oauth-sign": { 1149 | "version": "0.8.2", 1150 | "bundled": true, 1151 | "optional": true 1152 | }, 1153 | "object-assign": { 1154 | "version": "4.1.1", 1155 | "bundled": true, 1156 | "optional": true 1157 | }, 1158 | "once": { 1159 | "version": "1.4.0", 1160 | "bundled": true, 1161 | "requires": { 1162 | "wrappy": "1.0.2" 1163 | } 1164 | }, 1165 | "os-homedir": { 1166 | "version": "1.0.2", 1167 | "bundled": true, 1168 | "optional": true 1169 | }, 1170 | "os-tmpdir": { 1171 | "version": "1.0.2", 1172 | "bundled": true, 1173 | "optional": true 1174 | }, 1175 | "osenv": { 1176 | "version": "0.1.4", 1177 | "bundled": true, 1178 | "optional": true, 1179 | "requires": { 1180 | "os-homedir": "1.0.2", 1181 | "os-tmpdir": "1.0.2" 1182 | } 1183 | }, 1184 | "path-is-absolute": { 1185 | "version": "1.0.1", 1186 | "bundled": true 1187 | }, 1188 | "performance-now": { 1189 | "version": "0.2.0", 1190 | "bundled": true, 1191 | "optional": true 1192 | }, 1193 | "process-nextick-args": { 1194 | "version": "1.0.7", 1195 | "bundled": true 1196 | }, 1197 | "punycode": { 1198 | "version": "1.4.1", 1199 | "bundled": true, 1200 | "optional": true 1201 | }, 1202 | "qs": { 1203 | "version": "6.4.0", 1204 | "bundled": true, 1205 | "optional": true 1206 | }, 1207 | "rc": { 1208 | "version": "1.2.1", 1209 | "bundled": true, 1210 | "optional": true, 1211 | "requires": { 1212 | "deep-extend": "0.4.2", 1213 | "ini": "1.3.4", 1214 | "minimist": "1.2.0", 1215 | "strip-json-comments": "2.0.1" 1216 | }, 1217 | "dependencies": { 1218 | "minimist": { 1219 | "version": "1.2.0", 1220 | "bundled": true, 1221 | "optional": true 1222 | } 1223 | } 1224 | }, 1225 | "readable-stream": { 1226 | "version": "2.2.9", 1227 | "bundled": true, 1228 | "requires": { 1229 | "buffer-shims": "1.0.0", 1230 | "core-util-is": "1.0.2", 1231 | "inherits": "2.0.3", 1232 | "isarray": "1.0.0", 1233 | "process-nextick-args": "1.0.7", 1234 | "string_decoder": "1.0.1", 1235 | "util-deprecate": "1.0.2" 1236 | } 1237 | }, 1238 | "request": { 1239 | "version": "2.81.0", 1240 | "bundled": true, 1241 | "optional": true, 1242 | "requires": { 1243 | "aws-sign2": "0.6.0", 1244 | "aws4": "1.6.0", 1245 | "caseless": "0.12.0", 1246 | "combined-stream": "1.0.5", 1247 | "extend": "3.0.1", 1248 | "forever-agent": "0.6.1", 1249 | "form-data": "2.1.4", 1250 | "har-validator": "4.2.1", 1251 | "hawk": "3.1.3", 1252 | "http-signature": "1.1.1", 1253 | "is-typedarray": "1.0.0", 1254 | "isstream": "0.1.2", 1255 | "json-stringify-safe": "5.0.1", 1256 | "mime-types": "2.1.15", 1257 | "oauth-sign": "0.8.2", 1258 | "performance-now": "0.2.0", 1259 | "qs": "6.4.0", 1260 | "safe-buffer": "5.0.1", 1261 | "stringstream": "0.0.5", 1262 | "tough-cookie": "2.3.2", 1263 | "tunnel-agent": "0.6.0", 1264 | "uuid": "3.0.1" 1265 | } 1266 | }, 1267 | "rimraf": { 1268 | "version": "2.6.1", 1269 | "bundled": true, 1270 | "requires": { 1271 | "glob": "7.1.2" 1272 | } 1273 | }, 1274 | "safe-buffer": { 1275 | "version": "5.0.1", 1276 | "bundled": true 1277 | }, 1278 | "semver": { 1279 | "version": "5.3.0", 1280 | "bundled": true, 1281 | "optional": true 1282 | }, 1283 | "set-blocking": { 1284 | "version": "2.0.0", 1285 | "bundled": true, 1286 | "optional": true 1287 | }, 1288 | "signal-exit": { 1289 | "version": "3.0.2", 1290 | "bundled": true, 1291 | "optional": true 1292 | }, 1293 | "sntp": { 1294 | "version": "1.0.9", 1295 | "bundled": true, 1296 | "requires": { 1297 | "hoek": "2.16.3" 1298 | } 1299 | }, 1300 | "sshpk": { 1301 | "version": "1.13.0", 1302 | "bundled": true, 1303 | "optional": true, 1304 | "requires": { 1305 | "asn1": "0.2.3", 1306 | "assert-plus": "1.0.0", 1307 | "bcrypt-pbkdf": "1.0.1", 1308 | "dashdash": "1.14.1", 1309 | "ecc-jsbn": "0.1.1", 1310 | "getpass": "0.1.7", 1311 | "jodid25519": "1.0.2", 1312 | "jsbn": "0.1.1", 1313 | "tweetnacl": "0.14.5" 1314 | }, 1315 | "dependencies": { 1316 | "assert-plus": { 1317 | "version": "1.0.0", 1318 | "bundled": true, 1319 | "optional": true 1320 | } 1321 | } 1322 | }, 1323 | "string-width": { 1324 | "version": "1.0.2", 1325 | "bundled": true, 1326 | "requires": { 1327 | "code-point-at": "1.1.0", 1328 | "is-fullwidth-code-point": "1.0.0", 1329 | "strip-ansi": "3.0.1" 1330 | } 1331 | }, 1332 | "string_decoder": { 1333 | "version": "1.0.1", 1334 | "bundled": true, 1335 | "requires": { 1336 | "safe-buffer": "5.0.1" 1337 | } 1338 | }, 1339 | "stringstream": { 1340 | "version": "0.0.5", 1341 | "bundled": true, 1342 | "optional": true 1343 | }, 1344 | "strip-ansi": { 1345 | "version": "3.0.1", 1346 | "bundled": true, 1347 | "requires": { 1348 | "ansi-regex": "2.1.1" 1349 | } 1350 | }, 1351 | "strip-json-comments": { 1352 | "version": "2.0.1", 1353 | "bundled": true, 1354 | "optional": true 1355 | }, 1356 | "tar": { 1357 | "version": "2.2.1", 1358 | "bundled": true, 1359 | "requires": { 1360 | "block-stream": "0.0.9", 1361 | "fstream": "1.0.11", 1362 | "inherits": "2.0.3" 1363 | } 1364 | }, 1365 | "tar-pack": { 1366 | "version": "3.4.0", 1367 | "bundled": true, 1368 | "optional": true, 1369 | "requires": { 1370 | "debug": "2.6.8", 1371 | "fstream": "1.0.11", 1372 | "fstream-ignore": "1.0.5", 1373 | "once": "1.4.0", 1374 | "readable-stream": "2.2.9", 1375 | "rimraf": "2.6.1", 1376 | "tar": "2.2.1", 1377 | "uid-number": "0.0.6" 1378 | } 1379 | }, 1380 | "tough-cookie": { 1381 | "version": "2.3.2", 1382 | "bundled": true, 1383 | "optional": true, 1384 | "requires": { 1385 | "punycode": "1.4.1" 1386 | } 1387 | }, 1388 | "tunnel-agent": { 1389 | "version": "0.6.0", 1390 | "bundled": true, 1391 | "optional": true, 1392 | "requires": { 1393 | "safe-buffer": "5.0.1" 1394 | } 1395 | }, 1396 | "tweetnacl": { 1397 | "version": "0.14.5", 1398 | "bundled": true, 1399 | "optional": true 1400 | }, 1401 | "uid-number": { 1402 | "version": "0.0.6", 1403 | "bundled": true, 1404 | "optional": true 1405 | }, 1406 | "util-deprecate": { 1407 | "version": "1.0.2", 1408 | "bundled": true 1409 | }, 1410 | "uuid": { 1411 | "version": "3.0.1", 1412 | "bundled": true, 1413 | "optional": true 1414 | }, 1415 | "verror": { 1416 | "version": "1.3.6", 1417 | "bundled": true, 1418 | "optional": true, 1419 | "requires": { 1420 | "extsprintf": "1.0.2" 1421 | } 1422 | }, 1423 | "wide-align": { 1424 | "version": "1.1.2", 1425 | "bundled": true, 1426 | "optional": true, 1427 | "requires": { 1428 | "string-width": "1.0.2" 1429 | } 1430 | }, 1431 | "wrappy": { 1432 | "version": "1.0.2", 1433 | "bundled": true 1434 | } 1435 | } 1436 | }, 1437 | "get-stream": { 1438 | "version": "3.0.0", 1439 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", 1440 | "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" 1441 | }, 1442 | "getpass": { 1443 | "version": "0.1.7", 1444 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", 1445 | "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", 1446 | "requires": { 1447 | "assert-plus": "1.0.0" 1448 | } 1449 | }, 1450 | "glob-base": { 1451 | "version": "0.3.0", 1452 | "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", 1453 | "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", 1454 | "requires": { 1455 | "glob-parent": "2.0.0", 1456 | "is-glob": "2.0.1" 1457 | } 1458 | }, 1459 | "glob-parent": { 1460 | "version": "2.0.0", 1461 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", 1462 | "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", 1463 | "requires": { 1464 | "is-glob": "2.0.1" 1465 | } 1466 | }, 1467 | "global-dirs": { 1468 | "version": "0.1.1", 1469 | "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", 1470 | "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", 1471 | "requires": { 1472 | "ini": "1.3.5" 1473 | } 1474 | }, 1475 | "got": { 1476 | "version": "6.7.1", 1477 | "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", 1478 | "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", 1479 | "requires": { 1480 | "create-error-class": "3.0.2", 1481 | "duplexer3": "0.1.4", 1482 | "get-stream": "3.0.0", 1483 | "is-redirect": "1.0.0", 1484 | "is-retry-allowed": "1.1.0", 1485 | "is-stream": "1.1.0", 1486 | "lowercase-keys": "1.0.0", 1487 | "safe-buffer": "5.1.1", 1488 | "timed-out": "4.0.1", 1489 | "unzip-response": "2.0.1", 1490 | "url-parse-lax": "1.0.0" 1491 | } 1492 | }, 1493 | "graceful-fs": { 1494 | "version": "4.1.11", 1495 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 1496 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" 1497 | }, 1498 | "har-schema": { 1499 | "version": "2.0.0", 1500 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", 1501 | "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" 1502 | }, 1503 | "har-validator": { 1504 | "version": "5.0.3", 1505 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", 1506 | "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", 1507 | "requires": { 1508 | "ajv": "5.5.1", 1509 | "har-schema": "2.0.0" 1510 | } 1511 | }, 1512 | "has-flag": { 1513 | "version": "2.0.0", 1514 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", 1515 | "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" 1516 | }, 1517 | "hawk": { 1518 | "version": "6.0.2", 1519 | "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", 1520 | "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", 1521 | "requires": { 1522 | "boom": "4.3.1", 1523 | "cryptiles": "3.1.2", 1524 | "hoek": "4.2.0", 1525 | "sntp": "2.1.0" 1526 | } 1527 | }, 1528 | "hoek": { 1529 | "version": "4.2.0", 1530 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", 1531 | "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==" 1532 | }, 1533 | "http-errors": { 1534 | "version": "1.6.2", 1535 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", 1536 | "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", 1537 | "requires": { 1538 | "depd": "1.1.1", 1539 | "inherits": "2.0.3", 1540 | "setprototypeof": "1.0.3", 1541 | "statuses": "1.3.1" 1542 | }, 1543 | "dependencies": { 1544 | "setprototypeof": { 1545 | "version": "1.0.3", 1546 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", 1547 | "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" 1548 | } 1549 | } 1550 | }, 1551 | "http-signature": { 1552 | "version": "1.2.0", 1553 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", 1554 | "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", 1555 | "requires": { 1556 | "assert-plus": "1.0.0", 1557 | "jsprim": "1.4.1", 1558 | "sshpk": "1.13.1" 1559 | } 1560 | }, 1561 | "iconv-lite": { 1562 | "version": "0.4.19", 1563 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", 1564 | "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" 1565 | }, 1566 | "ignore-by-default": { 1567 | "version": "1.0.1", 1568 | "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", 1569 | "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=" 1570 | }, 1571 | "import-lazy": { 1572 | "version": "2.1.0", 1573 | "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", 1574 | "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" 1575 | }, 1576 | "imurmurhash": { 1577 | "version": "0.1.4", 1578 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1579 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" 1580 | }, 1581 | "inherits": { 1582 | "version": "2.0.3", 1583 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1584 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 1585 | }, 1586 | "ini": { 1587 | "version": "1.3.5", 1588 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", 1589 | "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" 1590 | }, 1591 | "ipaddr.js": { 1592 | "version": "1.5.2", 1593 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz", 1594 | "integrity": "sha1-1LUFvemUaYfM8PxY2QEP+WB+P6A=" 1595 | }, 1596 | "is-binary-path": { 1597 | "version": "1.0.1", 1598 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", 1599 | "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", 1600 | "requires": { 1601 | "binary-extensions": "1.11.0" 1602 | } 1603 | }, 1604 | "is-buffer": { 1605 | "version": "1.1.6", 1606 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 1607 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" 1608 | }, 1609 | "is-dotfile": { 1610 | "version": "1.0.3", 1611 | "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", 1612 | "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" 1613 | }, 1614 | "is-equal-shallow": { 1615 | "version": "0.1.3", 1616 | "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", 1617 | "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", 1618 | "requires": { 1619 | "is-primitive": "2.0.0" 1620 | } 1621 | }, 1622 | "is-extendable": { 1623 | "version": "0.1.1", 1624 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 1625 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" 1626 | }, 1627 | "is-extglob": { 1628 | "version": "1.0.0", 1629 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", 1630 | "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" 1631 | }, 1632 | "is-fullwidth-code-point": { 1633 | "version": "2.0.0", 1634 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 1635 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" 1636 | }, 1637 | "is-glob": { 1638 | "version": "2.0.1", 1639 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", 1640 | "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", 1641 | "requires": { 1642 | "is-extglob": "1.0.0" 1643 | } 1644 | }, 1645 | "is-installed-globally": { 1646 | "version": "0.1.0", 1647 | "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", 1648 | "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", 1649 | "requires": { 1650 | "global-dirs": "0.1.1", 1651 | "is-path-inside": "1.0.1" 1652 | } 1653 | }, 1654 | "is-npm": { 1655 | "version": "1.0.0", 1656 | "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", 1657 | "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=" 1658 | }, 1659 | "is-number": { 1660 | "version": "2.1.0", 1661 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", 1662 | "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", 1663 | "requires": { 1664 | "kind-of": "3.2.2" 1665 | } 1666 | }, 1667 | "is-obj": { 1668 | "version": "1.0.1", 1669 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", 1670 | "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" 1671 | }, 1672 | "is-path-inside": { 1673 | "version": "1.0.1", 1674 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", 1675 | "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", 1676 | "requires": { 1677 | "path-is-inside": "1.0.2" 1678 | } 1679 | }, 1680 | "is-posix-bracket": { 1681 | "version": "0.1.1", 1682 | "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", 1683 | "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" 1684 | }, 1685 | "is-primitive": { 1686 | "version": "2.0.0", 1687 | "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", 1688 | "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" 1689 | }, 1690 | "is-redirect": { 1691 | "version": "1.0.0", 1692 | "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", 1693 | "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" 1694 | }, 1695 | "is-retry-allowed": { 1696 | "version": "1.1.0", 1697 | "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", 1698 | "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=" 1699 | }, 1700 | "is-stream": { 1701 | "version": "1.1.0", 1702 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 1703 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" 1704 | }, 1705 | "is-typedarray": { 1706 | "version": "1.0.0", 1707 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 1708 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" 1709 | }, 1710 | "isarray": { 1711 | "version": "1.0.0", 1712 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1713 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 1714 | }, 1715 | "isexe": { 1716 | "version": "2.0.0", 1717 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1718 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" 1719 | }, 1720 | "isobject": { 1721 | "version": "2.1.0", 1722 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 1723 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 1724 | "requires": { 1725 | "isarray": "1.0.0" 1726 | } 1727 | }, 1728 | "isstream": { 1729 | "version": "0.1.2", 1730 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 1731 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" 1732 | }, 1733 | "jsbn": { 1734 | "version": "0.1.1", 1735 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", 1736 | "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", 1737 | "optional": true 1738 | }, 1739 | "json-schema": { 1740 | "version": "0.2.3", 1741 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", 1742 | "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" 1743 | }, 1744 | "json-schema-traverse": { 1745 | "version": "0.3.1", 1746 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", 1747 | "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" 1748 | }, 1749 | "json-stringify-safe": { 1750 | "version": "5.0.1", 1751 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 1752 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" 1753 | }, 1754 | "jsonwebtoken": { 1755 | "version": "8.1.0", 1756 | "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.1.0.tgz", 1757 | "integrity": "sha1-xjl80uX9WD1lwAeoPce7eOaYK4M=", 1758 | "requires": { 1759 | "jws": "3.1.4", 1760 | "lodash.includes": "4.3.0", 1761 | "lodash.isboolean": "3.0.3", 1762 | "lodash.isinteger": "4.0.4", 1763 | "lodash.isnumber": "3.0.3", 1764 | "lodash.isplainobject": "4.0.6", 1765 | "lodash.isstring": "4.0.1", 1766 | "lodash.once": "4.1.1", 1767 | "ms": "2.0.0", 1768 | "xtend": "4.0.1" 1769 | } 1770 | }, 1771 | "jsprim": { 1772 | "version": "1.4.1", 1773 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", 1774 | "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", 1775 | "requires": { 1776 | "assert-plus": "1.0.0", 1777 | "extsprintf": "1.3.0", 1778 | "json-schema": "0.2.3", 1779 | "verror": "1.10.0" 1780 | } 1781 | }, 1782 | "jwa": { 1783 | "version": "1.1.5", 1784 | "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.5.tgz", 1785 | "integrity": "sha1-oFUs4CIHQs1S4VN3SjKQXDDnVuU=", 1786 | "requires": { 1787 | "base64url": "2.0.0", 1788 | "buffer-equal-constant-time": "1.0.1", 1789 | "ecdsa-sig-formatter": "1.0.9", 1790 | "safe-buffer": "5.1.1" 1791 | } 1792 | }, 1793 | "jws": { 1794 | "version": "3.1.4", 1795 | "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.4.tgz", 1796 | "integrity": "sha1-+ei5M46KhHJ31kRLFGT2GIDgUKI=", 1797 | "requires": { 1798 | "base64url": "2.0.0", 1799 | "jwa": "1.1.5", 1800 | "safe-buffer": "5.1.1" 1801 | } 1802 | }, 1803 | "kind-of": { 1804 | "version": "3.2.2", 1805 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1806 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1807 | "requires": { 1808 | "is-buffer": "1.1.6" 1809 | } 1810 | }, 1811 | "latest-version": { 1812 | "version": "3.1.0", 1813 | "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", 1814 | "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", 1815 | "requires": { 1816 | "package-json": "4.0.1" 1817 | } 1818 | }, 1819 | "lodash._baseassign": { 1820 | "version": "3.2.0", 1821 | "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", 1822 | "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", 1823 | "requires": { 1824 | "lodash._basecopy": "3.0.1", 1825 | "lodash.keys": "3.1.2" 1826 | } 1827 | }, 1828 | "lodash._basecopy": { 1829 | "version": "3.0.1", 1830 | "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", 1831 | "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=" 1832 | }, 1833 | "lodash._bindcallback": { 1834 | "version": "3.0.1", 1835 | "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", 1836 | "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=" 1837 | }, 1838 | "lodash._createassigner": { 1839 | "version": "3.1.1", 1840 | "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz", 1841 | "integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=", 1842 | "requires": { 1843 | "lodash._bindcallback": "3.0.1", 1844 | "lodash._isiterateecall": "3.0.9", 1845 | "lodash.restparam": "3.6.1" 1846 | } 1847 | }, 1848 | "lodash._getnative": { 1849 | "version": "3.9.1", 1850 | "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", 1851 | "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" 1852 | }, 1853 | "lodash._isiterateecall": { 1854 | "version": "3.0.9", 1855 | "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", 1856 | "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=" 1857 | }, 1858 | "lodash.assign": { 1859 | "version": "3.2.0", 1860 | "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz", 1861 | "integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=", 1862 | "requires": { 1863 | "lodash._baseassign": "3.2.0", 1864 | "lodash._createassigner": "3.1.1", 1865 | "lodash.keys": "3.1.2" 1866 | } 1867 | }, 1868 | "lodash.defaults": { 1869 | "version": "3.1.2", 1870 | "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-3.1.2.tgz", 1871 | "integrity": "sha1-xzCLGNv4vJNy1wGnNJPGEZK9Liw=", 1872 | "requires": { 1873 | "lodash.assign": "3.2.0", 1874 | "lodash.restparam": "3.6.1" 1875 | } 1876 | }, 1877 | "lodash.includes": { 1878 | "version": "4.3.0", 1879 | "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", 1880 | "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" 1881 | }, 1882 | "lodash.isarguments": { 1883 | "version": "3.1.0", 1884 | "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", 1885 | "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" 1886 | }, 1887 | "lodash.isarray": { 1888 | "version": "3.0.4", 1889 | "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", 1890 | "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" 1891 | }, 1892 | "lodash.isboolean": { 1893 | "version": "3.0.3", 1894 | "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", 1895 | "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" 1896 | }, 1897 | "lodash.isinteger": { 1898 | "version": "4.0.4", 1899 | "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", 1900 | "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" 1901 | }, 1902 | "lodash.isnumber": { 1903 | "version": "3.0.3", 1904 | "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", 1905 | "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" 1906 | }, 1907 | "lodash.isplainobject": { 1908 | "version": "4.0.6", 1909 | "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", 1910 | "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" 1911 | }, 1912 | "lodash.isstring": { 1913 | "version": "4.0.1", 1914 | "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", 1915 | "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" 1916 | }, 1917 | "lodash.keys": { 1918 | "version": "3.1.2", 1919 | "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", 1920 | "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", 1921 | "requires": { 1922 | "lodash._getnative": "3.9.1", 1923 | "lodash.isarguments": "3.1.0", 1924 | "lodash.isarray": "3.0.4" 1925 | } 1926 | }, 1927 | "lodash.once": { 1928 | "version": "4.1.1", 1929 | "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", 1930 | "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" 1931 | }, 1932 | "lodash.restparam": { 1933 | "version": "3.6.1", 1934 | "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", 1935 | "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=" 1936 | }, 1937 | "lowercase-keys": { 1938 | "version": "1.0.0", 1939 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", 1940 | "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=" 1941 | }, 1942 | "lru-cache": { 1943 | "version": "4.1.1", 1944 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", 1945 | "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", 1946 | "requires": { 1947 | "pseudomap": "1.0.2", 1948 | "yallist": "2.1.2" 1949 | } 1950 | }, 1951 | "make-dir": { 1952 | "version": "1.1.0", 1953 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", 1954 | "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", 1955 | "requires": { 1956 | "pify": "3.0.0" 1957 | } 1958 | }, 1959 | "map-stream": { 1960 | "version": "0.1.0", 1961 | "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", 1962 | "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=" 1963 | }, 1964 | "media-typer": { 1965 | "version": "0.3.0", 1966 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 1967 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 1968 | }, 1969 | "merge-descriptors": { 1970 | "version": "1.0.1", 1971 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 1972 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 1973 | }, 1974 | "methods": { 1975 | "version": "1.1.2", 1976 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 1977 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" 1978 | }, 1979 | "micromatch": { 1980 | "version": "2.3.11", 1981 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", 1982 | "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", 1983 | "requires": { 1984 | "arr-diff": "2.0.0", 1985 | "array-unique": "0.2.1", 1986 | "braces": "1.8.5", 1987 | "expand-brackets": "0.1.5", 1988 | "extglob": "0.3.2", 1989 | "filename-regex": "2.0.1", 1990 | "is-extglob": "1.0.0", 1991 | "is-glob": "2.0.1", 1992 | "kind-of": "3.2.2", 1993 | "normalize-path": "2.1.1", 1994 | "object.omit": "2.0.1", 1995 | "parse-glob": "3.0.4", 1996 | "regex-cache": "0.4.4" 1997 | } 1998 | }, 1999 | "mime": { 2000 | "version": "1.4.1", 2001 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", 2002 | "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" 2003 | }, 2004 | "mime-db": { 2005 | "version": "1.30.0", 2006 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", 2007 | "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" 2008 | }, 2009 | "mime-types": { 2010 | "version": "2.1.17", 2011 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", 2012 | "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", 2013 | "requires": { 2014 | "mime-db": "1.30.0" 2015 | } 2016 | }, 2017 | "minimatch": { 2018 | "version": "3.0.4", 2019 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 2020 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 2021 | "requires": { 2022 | "brace-expansion": "1.1.8" 2023 | } 2024 | }, 2025 | "minimist": { 2026 | "version": "1.2.0", 2027 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 2028 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" 2029 | }, 2030 | "ms": { 2031 | "version": "2.0.0", 2032 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 2033 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 2034 | }, 2035 | "nan": { 2036 | "version": "2.8.0", 2037 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", 2038 | "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", 2039 | "optional": true 2040 | }, 2041 | "negotiator": { 2042 | "version": "0.6.1", 2043 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", 2044 | "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" 2045 | }, 2046 | "nodemon": { 2047 | "version": "1.12.5", 2048 | "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.12.5.tgz", 2049 | "integrity": "sha512-Kwx492h2buPPOie50cht/PdV+jXLqk28l79Nzs1udrFWIXpYHKCskLict1hTrln4ux61azehZcwm8M5McmiuAw==", 2050 | "requires": { 2051 | "chokidar": "1.7.0", 2052 | "debug": "2.6.9", 2053 | "es6-promise": "3.3.1", 2054 | "ignore-by-default": "1.0.1", 2055 | "lodash.defaults": "3.1.2", 2056 | "minimatch": "3.0.4", 2057 | "ps-tree": "1.1.0", 2058 | "touch": "3.1.0", 2059 | "undefsafe": "0.0.3", 2060 | "update-notifier": "2.3.0" 2061 | } 2062 | }, 2063 | "nopt": { 2064 | "version": "1.0.10", 2065 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", 2066 | "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", 2067 | "requires": { 2068 | "abbrev": "1.1.1" 2069 | } 2070 | }, 2071 | "normalize-path": { 2072 | "version": "2.1.1", 2073 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", 2074 | "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", 2075 | "requires": { 2076 | "remove-trailing-separator": "1.1.0" 2077 | } 2078 | }, 2079 | "npm-run-path": { 2080 | "version": "2.0.2", 2081 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", 2082 | "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", 2083 | "requires": { 2084 | "path-key": "2.0.1" 2085 | } 2086 | }, 2087 | "oauth-sign": { 2088 | "version": "0.8.2", 2089 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", 2090 | "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" 2091 | }, 2092 | "object.omit": { 2093 | "version": "2.0.1", 2094 | "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", 2095 | "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", 2096 | "requires": { 2097 | "for-own": "0.1.5", 2098 | "is-extendable": "0.1.1" 2099 | } 2100 | }, 2101 | "on-finished": { 2102 | "version": "2.3.0", 2103 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 2104 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 2105 | "requires": { 2106 | "ee-first": "1.1.1" 2107 | } 2108 | }, 2109 | "p-finally": { 2110 | "version": "1.0.0", 2111 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", 2112 | "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" 2113 | }, 2114 | "package-json": { 2115 | "version": "4.0.1", 2116 | "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", 2117 | "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", 2118 | "requires": { 2119 | "got": "6.7.1", 2120 | "registry-auth-token": "3.3.1", 2121 | "registry-url": "3.1.0", 2122 | "semver": "5.4.1" 2123 | } 2124 | }, 2125 | "parse-glob": { 2126 | "version": "3.0.4", 2127 | "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", 2128 | "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", 2129 | "requires": { 2130 | "glob-base": "0.3.0", 2131 | "is-dotfile": "1.0.3", 2132 | "is-extglob": "1.0.0", 2133 | "is-glob": "2.0.1" 2134 | } 2135 | }, 2136 | "parseurl": { 2137 | "version": "1.3.2", 2138 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", 2139 | "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" 2140 | }, 2141 | "path-is-absolute": { 2142 | "version": "1.0.1", 2143 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2144 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 2145 | }, 2146 | "path-is-inside": { 2147 | "version": "1.0.2", 2148 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", 2149 | "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" 2150 | }, 2151 | "path-key": { 2152 | "version": "2.0.1", 2153 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 2154 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" 2155 | }, 2156 | "path-to-regexp": { 2157 | "version": "0.1.7", 2158 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 2159 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 2160 | }, 2161 | "pause-stream": { 2162 | "version": "0.0.11", 2163 | "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", 2164 | "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", 2165 | "requires": { 2166 | "through": "2.3.8" 2167 | } 2168 | }, 2169 | "performance-now": { 2170 | "version": "2.1.0", 2171 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", 2172 | "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" 2173 | }, 2174 | "pify": { 2175 | "version": "3.0.0", 2176 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 2177 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" 2178 | }, 2179 | "prepend-http": { 2180 | "version": "1.0.4", 2181 | "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", 2182 | "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" 2183 | }, 2184 | "preserve": { 2185 | "version": "0.2.0", 2186 | "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", 2187 | "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" 2188 | }, 2189 | "process-nextick-args": { 2190 | "version": "1.0.7", 2191 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", 2192 | "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" 2193 | }, 2194 | "proxy-addr": { 2195 | "version": "2.0.2", 2196 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz", 2197 | "integrity": "sha1-ZXFQT0e7mI7IGAJT+F3X4UlSvew=", 2198 | "requires": { 2199 | "forwarded": "0.1.2", 2200 | "ipaddr.js": "1.5.2" 2201 | } 2202 | }, 2203 | "ps-tree": { 2204 | "version": "1.1.0", 2205 | "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.1.0.tgz", 2206 | "integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=", 2207 | "requires": { 2208 | "event-stream": "3.3.4" 2209 | } 2210 | }, 2211 | "pseudomap": { 2212 | "version": "1.0.2", 2213 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 2214 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" 2215 | }, 2216 | "punycode": { 2217 | "version": "1.4.1", 2218 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", 2219 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" 2220 | }, 2221 | "qs": { 2222 | "version": "6.5.1", 2223 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", 2224 | "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" 2225 | }, 2226 | "randomatic": { 2227 | "version": "1.1.7", 2228 | "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", 2229 | "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", 2230 | "requires": { 2231 | "is-number": "3.0.0", 2232 | "kind-of": "4.0.0" 2233 | }, 2234 | "dependencies": { 2235 | "is-number": { 2236 | "version": "3.0.0", 2237 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 2238 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", 2239 | "requires": { 2240 | "kind-of": "3.2.2" 2241 | }, 2242 | "dependencies": { 2243 | "kind-of": { 2244 | "version": "3.2.2", 2245 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 2246 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2247 | "requires": { 2248 | "is-buffer": "1.1.6" 2249 | } 2250 | } 2251 | } 2252 | }, 2253 | "kind-of": { 2254 | "version": "4.0.0", 2255 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", 2256 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", 2257 | "requires": { 2258 | "is-buffer": "1.1.6" 2259 | } 2260 | } 2261 | } 2262 | }, 2263 | "range-parser": { 2264 | "version": "1.2.0", 2265 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", 2266 | "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" 2267 | }, 2268 | "raw-body": { 2269 | "version": "2.3.2", 2270 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", 2271 | "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", 2272 | "requires": { 2273 | "bytes": "3.0.0", 2274 | "http-errors": "1.6.2", 2275 | "iconv-lite": "0.4.19", 2276 | "unpipe": "1.0.0" 2277 | } 2278 | }, 2279 | "rc": { 2280 | "version": "1.2.2", 2281 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.2.tgz", 2282 | "integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=", 2283 | "requires": { 2284 | "deep-extend": "0.4.2", 2285 | "ini": "1.3.5", 2286 | "minimist": "1.2.0", 2287 | "strip-json-comments": "2.0.1" 2288 | } 2289 | }, 2290 | "readable-stream": { 2291 | "version": "2.3.3", 2292 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", 2293 | "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", 2294 | "requires": { 2295 | "core-util-is": "1.0.2", 2296 | "inherits": "2.0.3", 2297 | "isarray": "1.0.0", 2298 | "process-nextick-args": "1.0.7", 2299 | "safe-buffer": "5.1.1", 2300 | "string_decoder": "1.0.3", 2301 | "util-deprecate": "1.0.2" 2302 | } 2303 | }, 2304 | "readdirp": { 2305 | "version": "2.1.0", 2306 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", 2307 | "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", 2308 | "requires": { 2309 | "graceful-fs": "4.1.11", 2310 | "minimatch": "3.0.4", 2311 | "readable-stream": "2.3.3", 2312 | "set-immediate-shim": "1.0.1" 2313 | } 2314 | }, 2315 | "regex-cache": { 2316 | "version": "0.4.4", 2317 | "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", 2318 | "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", 2319 | "requires": { 2320 | "is-equal-shallow": "0.1.3" 2321 | } 2322 | }, 2323 | "registry-auth-token": { 2324 | "version": "3.3.1", 2325 | "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz", 2326 | "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", 2327 | "requires": { 2328 | "rc": "1.2.2", 2329 | "safe-buffer": "5.1.1" 2330 | } 2331 | }, 2332 | "registry-url": { 2333 | "version": "3.1.0", 2334 | "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", 2335 | "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", 2336 | "requires": { 2337 | "rc": "1.2.2" 2338 | } 2339 | }, 2340 | "remove-trailing-separator": { 2341 | "version": "1.1.0", 2342 | "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", 2343 | "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" 2344 | }, 2345 | "repeat-element": { 2346 | "version": "1.1.2", 2347 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", 2348 | "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" 2349 | }, 2350 | "repeat-string": { 2351 | "version": "1.6.1", 2352 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 2353 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" 2354 | }, 2355 | "request": { 2356 | "version": "2.83.0", 2357 | "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", 2358 | "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", 2359 | "requires": { 2360 | "aws-sign2": "0.7.0", 2361 | "aws4": "1.6.0", 2362 | "caseless": "0.12.0", 2363 | "combined-stream": "1.0.5", 2364 | "extend": "3.0.1", 2365 | "forever-agent": "0.6.1", 2366 | "form-data": "2.3.1", 2367 | "har-validator": "5.0.3", 2368 | "hawk": "6.0.2", 2369 | "http-signature": "1.2.0", 2370 | "is-typedarray": "1.0.0", 2371 | "isstream": "0.1.2", 2372 | "json-stringify-safe": "5.0.1", 2373 | "mime-types": "2.1.17", 2374 | "oauth-sign": "0.8.2", 2375 | "performance-now": "2.1.0", 2376 | "qs": "6.5.1", 2377 | "safe-buffer": "5.1.1", 2378 | "stringstream": "0.0.5", 2379 | "tough-cookie": "2.3.3", 2380 | "tunnel-agent": "0.6.0", 2381 | "uuid": "3.1.0" 2382 | } 2383 | }, 2384 | "safe-buffer": { 2385 | "version": "5.1.1", 2386 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 2387 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" 2388 | }, 2389 | "semver": { 2390 | "version": "5.4.1", 2391 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", 2392 | "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" 2393 | }, 2394 | "semver-diff": { 2395 | "version": "2.1.0", 2396 | "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", 2397 | "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", 2398 | "requires": { 2399 | "semver": "5.4.1" 2400 | } 2401 | }, 2402 | "send": { 2403 | "version": "0.16.1", 2404 | "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", 2405 | "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", 2406 | "requires": { 2407 | "debug": "2.6.9", 2408 | "depd": "1.1.1", 2409 | "destroy": "1.0.4", 2410 | "encodeurl": "1.0.1", 2411 | "escape-html": "1.0.3", 2412 | "etag": "1.8.1", 2413 | "fresh": "0.5.2", 2414 | "http-errors": "1.6.2", 2415 | "mime": "1.4.1", 2416 | "ms": "2.0.0", 2417 | "on-finished": "2.3.0", 2418 | "range-parser": "1.2.0", 2419 | "statuses": "1.3.1" 2420 | } 2421 | }, 2422 | "serve-static": { 2423 | "version": "1.13.1", 2424 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", 2425 | "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", 2426 | "requires": { 2427 | "encodeurl": "1.0.1", 2428 | "escape-html": "1.0.3", 2429 | "parseurl": "1.3.2", 2430 | "send": "0.16.1" 2431 | } 2432 | }, 2433 | "set-immediate-shim": { 2434 | "version": "1.0.1", 2435 | "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", 2436 | "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" 2437 | }, 2438 | "setprototypeof": { 2439 | "version": "1.1.0", 2440 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", 2441 | "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" 2442 | }, 2443 | "shebang-command": { 2444 | "version": "1.2.0", 2445 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 2446 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 2447 | "requires": { 2448 | "shebang-regex": "1.0.0" 2449 | } 2450 | }, 2451 | "shebang-regex": { 2452 | "version": "1.0.0", 2453 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 2454 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" 2455 | }, 2456 | "signal-exit": { 2457 | "version": "3.0.2", 2458 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 2459 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" 2460 | }, 2461 | "sntp": { 2462 | "version": "2.1.0", 2463 | "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", 2464 | "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", 2465 | "requires": { 2466 | "hoek": "4.2.0" 2467 | } 2468 | }, 2469 | "split": { 2470 | "version": "0.3.3", 2471 | "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", 2472 | "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", 2473 | "requires": { 2474 | "through": "2.3.8" 2475 | } 2476 | }, 2477 | "sshpk": { 2478 | "version": "1.13.1", 2479 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", 2480 | "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", 2481 | "requires": { 2482 | "asn1": "0.2.3", 2483 | "assert-plus": "1.0.0", 2484 | "bcrypt-pbkdf": "1.0.1", 2485 | "dashdash": "1.14.1", 2486 | "ecc-jsbn": "0.1.1", 2487 | "getpass": "0.1.7", 2488 | "jsbn": "0.1.1", 2489 | "tweetnacl": "0.14.5" 2490 | } 2491 | }, 2492 | "statuses": { 2493 | "version": "1.3.1", 2494 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", 2495 | "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" 2496 | }, 2497 | "stream-combiner": { 2498 | "version": "0.0.4", 2499 | "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", 2500 | "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", 2501 | "requires": { 2502 | "duplexer": "0.1.1" 2503 | } 2504 | }, 2505 | "string-width": { 2506 | "version": "2.1.1", 2507 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 2508 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 2509 | "requires": { 2510 | "is-fullwidth-code-point": "2.0.0", 2511 | "strip-ansi": "4.0.0" 2512 | } 2513 | }, 2514 | "string_decoder": { 2515 | "version": "1.0.3", 2516 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 2517 | "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", 2518 | "requires": { 2519 | "safe-buffer": "5.1.1" 2520 | } 2521 | }, 2522 | "stringstream": { 2523 | "version": "0.0.5", 2524 | "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", 2525 | "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" 2526 | }, 2527 | "strip-ansi": { 2528 | "version": "4.0.0", 2529 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 2530 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 2531 | "requires": { 2532 | "ansi-regex": "3.0.0" 2533 | } 2534 | }, 2535 | "strip-eof": { 2536 | "version": "1.0.0", 2537 | "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", 2538 | "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" 2539 | }, 2540 | "strip-json-comments": { 2541 | "version": "2.0.1", 2542 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 2543 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" 2544 | }, 2545 | "supports-color": { 2546 | "version": "4.5.0", 2547 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", 2548 | "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", 2549 | "requires": { 2550 | "has-flag": "2.0.0" 2551 | } 2552 | }, 2553 | "term-size": { 2554 | "version": "1.2.0", 2555 | "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", 2556 | "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", 2557 | "requires": { 2558 | "execa": "0.7.0" 2559 | } 2560 | }, 2561 | "through": { 2562 | "version": "2.3.8", 2563 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 2564 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" 2565 | }, 2566 | "timed-out": { 2567 | "version": "4.0.1", 2568 | "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", 2569 | "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" 2570 | }, 2571 | "touch": { 2572 | "version": "3.1.0", 2573 | "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", 2574 | "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", 2575 | "requires": { 2576 | "nopt": "1.0.10" 2577 | } 2578 | }, 2579 | "tough-cookie": { 2580 | "version": "2.3.3", 2581 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", 2582 | "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", 2583 | "requires": { 2584 | "punycode": "1.4.1" 2585 | } 2586 | }, 2587 | "tunnel-agent": { 2588 | "version": "0.6.0", 2589 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 2590 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", 2591 | "requires": { 2592 | "safe-buffer": "5.1.1" 2593 | } 2594 | }, 2595 | "tweetnacl": { 2596 | "version": "0.14.5", 2597 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", 2598 | "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", 2599 | "optional": true 2600 | }, 2601 | "type-is": { 2602 | "version": "1.6.15", 2603 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", 2604 | "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", 2605 | "requires": { 2606 | "media-typer": "0.3.0", 2607 | "mime-types": "2.1.17" 2608 | } 2609 | }, 2610 | "undefsafe": { 2611 | "version": "0.0.3", 2612 | "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-0.0.3.tgz", 2613 | "integrity": "sha1-7Mo6A+VrmvFzhbqsgSrIO5lKli8=" 2614 | }, 2615 | "unique-string": { 2616 | "version": "1.0.0", 2617 | "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", 2618 | "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", 2619 | "requires": { 2620 | "crypto-random-string": "1.0.0" 2621 | } 2622 | }, 2623 | "unpipe": { 2624 | "version": "1.0.0", 2625 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 2626 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 2627 | }, 2628 | "unzip-response": { 2629 | "version": "2.0.1", 2630 | "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", 2631 | "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=" 2632 | }, 2633 | "update-notifier": { 2634 | "version": "2.3.0", 2635 | "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.3.0.tgz", 2636 | "integrity": "sha1-TognpruRUUCrCTVZ1wFOPruDdFE=", 2637 | "requires": { 2638 | "boxen": "1.3.0", 2639 | "chalk": "2.3.0", 2640 | "configstore": "3.1.1", 2641 | "import-lazy": "2.1.0", 2642 | "is-installed-globally": "0.1.0", 2643 | "is-npm": "1.0.0", 2644 | "latest-version": "3.1.0", 2645 | "semver-diff": "2.1.0", 2646 | "xdg-basedir": "3.0.0" 2647 | } 2648 | }, 2649 | "url-parse-lax": { 2650 | "version": "1.0.0", 2651 | "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", 2652 | "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", 2653 | "requires": { 2654 | "prepend-http": "1.0.4" 2655 | } 2656 | }, 2657 | "util-deprecate": { 2658 | "version": "1.0.2", 2659 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2660 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 2661 | }, 2662 | "utils-merge": { 2663 | "version": "1.0.1", 2664 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 2665 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 2666 | }, 2667 | "uuid": { 2668 | "version": "3.1.0", 2669 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", 2670 | "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==" 2671 | }, 2672 | "vary": { 2673 | "version": "1.1.2", 2674 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 2675 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 2676 | }, 2677 | "verror": { 2678 | "version": "1.10.0", 2679 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", 2680 | "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", 2681 | "requires": { 2682 | "assert-plus": "1.0.0", 2683 | "core-util-is": "1.0.2", 2684 | "extsprintf": "1.3.0" 2685 | } 2686 | }, 2687 | "which": { 2688 | "version": "1.3.0", 2689 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", 2690 | "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", 2691 | "requires": { 2692 | "isexe": "2.0.0" 2693 | } 2694 | }, 2695 | "widest-line": { 2696 | "version": "2.0.0", 2697 | "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", 2698 | "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", 2699 | "requires": { 2700 | "string-width": "2.1.1" 2701 | } 2702 | }, 2703 | "write-file-atomic": { 2704 | "version": "2.3.0", 2705 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", 2706 | "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", 2707 | "requires": { 2708 | "graceful-fs": "4.1.11", 2709 | "imurmurhash": "0.1.4", 2710 | "signal-exit": "3.0.2" 2711 | } 2712 | }, 2713 | "xdg-basedir": { 2714 | "version": "3.0.0", 2715 | "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", 2716 | "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=" 2717 | }, 2718 | "xtend": { 2719 | "version": "4.0.1", 2720 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", 2721 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" 2722 | }, 2723 | "yallist": { 2724 | "version": "2.1.2", 2725 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", 2726 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" 2727 | } 2728 | } 2729 | } 2730 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "oauth", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "nodemon index.js", 8 | "test": "echo \"Error: no test specified\" && exit 1" 9 | }, 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "express": "^4.16.2", 14 | "jsonwebtoken": "^8.1.0", 15 | "nodemon": "^1.12.5", 16 | "request": "^2.83.0" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /style.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: #DDE; 3 | display: flex; 4 | justify-content: center; 5 | width: 100vw; 6 | height: 100vh; 7 | margin: 0; 8 | font-family: 'Barlow Semi Condensed', sans-serif; 9 | } 10 | 11 | a, a:visited, a:hover, a:active { 12 | color: #FFF; 13 | text-decoration: none; 14 | } 15 | 16 | #main { 17 | background-color: #FFF; 18 | border: 1px solid #CCC; 19 | border-radius: 10px; 20 | width: 400px; 21 | height: 600px; 22 | margin-top: 100px; 23 | display: flex; 24 | flex-direction: column; 25 | justify-content: center; 26 | align-items: center; 27 | } 28 | 29 | #main span { 30 | font-size: 1.8em; 31 | margin-bottom: 40px; 32 | } 33 | 34 | button { 35 | width: 300px; 36 | height: 40px; 37 | display: flex; 38 | justify-content: space-between; 39 | align-items: center; 40 | border: 1px solid #CCC; 41 | border-radius: 5px; 42 | margin-bottom: 20px; 43 | font-size: 1.4em; 44 | cursor: pointer; 45 | font-family: 'Barlow Semi Condensed', sans-serif; 46 | color: white; 47 | outline: none; 48 | } 49 | 50 | #github button { 51 | background-color: #444444; 52 | } 53 | 54 | #github button:hover { 55 | background-color: #757474; 56 | } 57 | 58 | #google button { 59 | background-color: #DB4C3F; 60 | } 61 | 62 | #google button:hover { 63 | background-color: rgb(255, 112, 105); 64 | } 65 | 66 | #instagram button { 67 | background-color: #417299; 68 | } 69 | 70 | #instagram button:hover { 71 | background-color: #65a0ca; 72 | } 73 | 74 | #facebook button { 75 | background-color: #3D5A96; 76 | } 77 | 78 | #facebook button:hover { 79 | background-color: rgb(110, 142, 207); 80 | } 81 | 82 | #linkedin button { 83 | background-color: #117CB4; 84 | } 85 | 86 | #linkedin button:hover { 87 | background-color: rgb(100, 176, 214); 88 | } 89 | 90 | #reddit button { 91 | background-color: #EFF7FF; 92 | color: #000; 93 | } 94 | 95 | #reddit button:hover { 96 | background-color: rgb(211, 218, 224); 97 | } 98 | 99 | #tumblr button { 100 | background-color: #2D4761; 101 | } 102 | 103 | #tumblr button:hover { 104 | background-color: rgb(88, 115, 143); 105 | } --------------------------------------------------------------------------------