From 4b509d285c837753d4b873101f272a50be6ddb64 Mon Sep 17 00:00:00 2001 From: ronanfitz Date: Mon, 7 Aug 2017 15:51:33 -0700 Subject: [PATCH 01/23] Refactor schema and models (#4) * Add file structure * Build file structure * Complete User resolver * Add formatting * Add formatting * Initial Schema refactor * Complete User and Org Resolver * Initial issues model * Complete Repo Resolver and Model * Add Issue to schema * Complete issues model-resolver * Initial pullrequest-model * Add fetchPullRequest to repo * Complete pullrequest model and resolver * Complete milestone model and resolver * Refactor schema and user model * Complete Org model test * Complete User model test * Complete Issue model test * Organize code structure * Complete Milestone model test * Initial repos model test * Refactor Org model test * Complete Repo model test * Refactor User model test * Resolve linting errors * Refactor model format * Remove 'it' from tests * Complete root resolver test * Complete models refactor * Refactor root resolver test for new variable names * Format tests * Complete PullRequest tests * Refactor Orgs and Org model to match new schema layout * Refactor Repos model to match new schema layout * Refactor User and Issue model to match new schema layout * Refactor Repos and Repo to match new schema layout * Remove faulty tests * Remove unused lines from gitignore --- .gitignore | 1 + index.js | 23 +- package-lock.json | 498 ++++++++++++++++++++++++++++++++-- package.json | 15 +- scripts/test | 2 +- src/models/Issue.js | 31 +++ src/models/Milestone.js | 12 + src/models/Org.js | 46 ++++ src/models/Orgs.js | 53 ++++ src/models/PullRequest.js | 13 + src/models/Repo.js | 94 +++++++ src/models/Repos.js | 70 +++++ src/models/User.js | 21 ++ src/resolvers/RootResolver.js | 19 ++ src/schema/schema.js | 66 +++++ test/test.js | 8 - 16 files changed, 935 insertions(+), 37 deletions(-) create mode 100644 src/models/Issue.js create mode 100644 src/models/Milestone.js create mode 100644 src/models/Org.js create mode 100644 src/models/Orgs.js create mode 100644 src/models/PullRequest.js create mode 100644 src/models/Repo.js create mode 100644 src/models/Repos.js create mode 100644 src/models/User.js create mode 100644 src/resolvers/RootResolver.js create mode 100644 src/schema/schema.js delete mode 100644 test/test.js diff --git a/.gitignore b/.gitignore index 3c3629e..37d7e73 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ node_modules +.env diff --git a/index.js b/index.js index b78c4fc..4c692d0 100644 --- a/index.js +++ b/index.js @@ -1,20 +1,29 @@ const express = require('express'); const bodyParser = require('body-parser'); +const graphqlHTTP = require('express-graphql'); +const root = require('./src/resolvers/RootResolver'); +const schema = require('./src/schema/schema'); + const app = express(); const PORT = process.env.PORT || 8000; app.use(bodyParser.json()); -app.get('/', (req, res) => { - res.send('aok'); -}); +app.use('/graphql', graphqlHTTP({ + schema, + rootValue: root, + graphiql: true, +})); app.use((req, res) => { res.sendStatus(404); }); -app.listen(PORT, () => { - /* eslint-disable no-console */ - console.log(`Express server listening on port ${PORT}`); -}); + +if (!module.parent) { + app.listen(PORT, () => { + /* eslint-disable no-console */ + console.log(`Express server listening on port ${PORT}`); + }); +} diff --git a/package-lock.json b/package-lock.json index 4cf5092..9f5cb16 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3,6 +3,12 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@types/graphql": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/@types/graphql/-/graphql-0.9.4.tgz", + "integrity": "sha512-ob2dps4itT/Le5DbxjssBXtBnloDIRUbkgtAvaB42mJ8pVIWMRuURD9WjnhaEGZ4Ql/EryXMQWeU8Y0EU73QLw==", + "optional": true + }, "abbrev": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", @@ -129,8 +135,7 @@ "assertion-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", - "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=", - "dev": true + "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=" }, "async-each": { "version": "1.0.1", @@ -147,6 +152,141 @@ "js-tokens": "3.0.2" } }, + "babel-core": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz", + "integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=", + "dev": true, + "requires": { + "babel-code-frame": "6.22.0", + "babel-generator": "6.25.0", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.24.1", + "babel-runtime": "6.25.0", + "babel-template": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0", + "babylon": "6.17.4", + "convert-source-map": "1.5.0", + "debug": "2.6.7", + "json5": "0.5.1", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.7", + "slash": "1.0.0", + "source-map": "0.5.6" + } + }, + "babel-generator": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz", + "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=", + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.25.0", + "babel-types": "6.25.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.6", + "trim-right": "1.0.1" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "6.25.0", + "babel-template": "6.25.0" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.25.0" + } + }, + "babel-register": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", + "integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=", + "dev": true, + "requires": { + "babel-core": "6.25.0", + "babel-runtime": "6.25.0", + "core-js": "2.4.1", + "home-or-tmp": "2.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "source-map-support": "0.4.15" + } + }, + "babel-runtime": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.25.0.tgz", + "integrity": "sha1-M7mOql1IK7AajRqmtDetKwGuxBw=", + "dev": true, + "requires": { + "core-js": "2.4.1", + "regenerator-runtime": "0.10.5" + } + }, + "babel-template": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", + "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=", + "dev": true, + "requires": { + "babel-runtime": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0", + "babylon": "6.17.4", + "lodash": "4.17.4" + } + }, + "babel-traverse": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", + "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=", + "dev": true, + "requires": { + "babel-code-frame": "6.22.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.25.0", + "babel-types": "6.25.0", + "babylon": "6.17.4", + "debug": "2.6.7", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + } + }, + "babel-types": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", + "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=", + "dev": true, + "requires": { + "babel-runtime": "6.25.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.17.4", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz", + "integrity": "sha512-kChlV+0SXkjE0vUn9OZ7pBMWRFd8uq3mZe8x1K6jhuNcAFAtEnjchFAqB+dYEXKyd+JpT6eppRR78QAr5gTsUw==", + "dev": true + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -360,6 +500,12 @@ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz", "integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0=" }, + "convert-source-map": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", + "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", + "dev": true + }, "cookie": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", @@ -370,6 +516,12 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, + "core-js": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", + "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=", + "dev": true + }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -410,6 +562,12 @@ } } }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, "deep-extend": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", @@ -439,11 +597,36 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=" }, + "deprecated-decorator": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz", + "integrity": "sha1-AJZjF7ehL+kvPMgx91g68ym4bDc=" + }, "destroy": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "2.0.1" + }, + "dependencies": { + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + } + } + }, "diff": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", @@ -459,6 +642,11 @@ "isarray": "1.0.0" } }, + "dotenv": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz", + "integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=" + }, "duplexer": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", @@ -485,6 +673,14 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=" }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "0.4.15" + } + }, "end-of-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.0.0.tgz", @@ -502,9 +698,9 @@ } }, "es6-promise": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", - "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.1.1.tgz", + "integrity": "sha512-OaU1hHjgJf+b0NzsxCg7NdIYERD6Hy/PEmFLTjw+b65scuisG3Kt4QoTvJ66BBkPZ581gr0kpoVzKnxniM8nng==" }, "escape-html": { "version": "1.0.3", @@ -903,6 +1099,15 @@ "for-in": "1.0.2" } }, + "formatio": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.2.0.tgz", + "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=", + "dev": true, + "requires": { + "samsam": "1.2.1" + } + }, "forwarded": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", @@ -1928,6 +2133,24 @@ "iterall": "1.1.1" } }, + "graphql-tools": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-1.1.0.tgz", + "integrity": "sha1-jYbqaZew3qMIm2LcZV5HFGpmPrs=", + "requires": { + "@types/graphql": "0.9.4", + "deprecated-decorator": "0.1.6", + "lodash": "4.17.4", + "uuid": "3.1.0" + }, + "dependencies": { + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==" + } + } + }, "growl": { "version": "1.9.2", "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", @@ -1955,6 +2178,16 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, "hosted-git-info": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", @@ -2077,6 +2310,15 @@ } } }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, "ipaddr.js": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.3.0.tgz", @@ -2237,6 +2479,15 @@ "isarray": "1.0.0" } }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "requires": { + "node-fetch": "1.7.1", + "whatwg-fetch": "2.0.3" + } + }, "iterall": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.1.1.tgz", @@ -2261,6 +2512,12 @@ "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.5.0.tgz", "integrity": "sha512-+Q8JsoEQbrdE+a/gg1F9XO92gcKXgpE5UACqr0sIubjDmBEkd+OOWPGzQeMrWSLxd73r4dHxBeRW7edHu5LmJQ==" }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, "json-schema-traverse": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", @@ -2274,12 +2531,24 @@ "jsonify": "0.0.0" } }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, "json3": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", "dev": true }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, "jsonify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", @@ -2447,6 +2716,21 @@ "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=" }, + "lolex": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.6.0.tgz", + "integrity": "sha1-OpoCg0UqR9dDnnJzG54H1zhuSfY=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, "lowercase-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", @@ -2546,14 +2830,14 @@ } }, "mocha": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.4.2.tgz", - "integrity": "sha1-0O9NMyEm2/GNDWQMmzgt1IvpdZQ=", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.0.tgz", + "integrity": "sha512-pIU2PJjrPYvYRqVpjXzj76qltO9uBYI7woYAMoxbSefsa+vqAfptjoeevd6bUgwD0mPIO+hv9f7ltvsNreL2PA==", "dev": true, "requires": { "browser-stdout": "1.3.0", "commander": "2.9.0", - "debug": "2.6.0", + "debug": "2.6.8", "diff": "3.2.0", "escape-string-regexp": "1.0.5", "glob": "7.1.1", @@ -2565,12 +2849,12 @@ }, "dependencies": { "debug": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.0.tgz", - "integrity": "sha1-vFlryr52F/Edn6FTYe3tVgi4SZs=", + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", "dev": true, "requires": { - "ms": "0.7.2" + "ms": "2.0.0" } }, "glob": { @@ -2593,12 +2877,6 @@ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", - "dev": true - }, "supports-color": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", @@ -2626,6 +2904,12 @@ "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", "optional": true }, + "native-promise-only": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", + "integrity": "sha1-IKMYwwy0X3H+et+/eyHJnBRy7xE=", + "dev": true + }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -2644,6 +2928,68 @@ "inherits": "2.0.3" } }, + "nock": { + "version": "9.0.14", + "resolved": "https://registry.npmjs.org/nock/-/nock-9.0.14.tgz", + "integrity": "sha1-IhFVAlMXPOKYvNifyoJeg4E8pys=", + "dev": true, + "requires": { + "chai": "3.5.0", + "debug": "2.6.7", + "deep-equal": "1.0.1", + "json-stringify-safe": "5.0.1", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "propagate": "0.4.0", + "qs": "6.4.0", + "semver": "5.3.0" + }, + "dependencies": { + "chai": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", + "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", + "dev": true, + "requires": { + "assertion-error": "1.0.2", + "deep-eql": "0.1.3", + "type-detect": "1.0.0" + } + }, + "deep-eql": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", + "dev": true, + "requires": { + "type-detect": "0.1.1" + }, + "dependencies": { + "type-detect": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", + "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", + "dev": true + } + } + }, + "type-detect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", + "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=", + "dev": true + } + } + }, + "node-fetch": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.1.tgz", + "integrity": "sha512-j8XsFGCLw79vWXkZtMSmmLaOk9z5SQ9bV/tkbZVCqvgwzrjAGq66igobLofHtF63NvMTp2WjytpsNTGKa+XRIQ==", + "requires": { + "encoding": "0.1.12", + "is-stream": "1.1.0" + } + }, "nodemon": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.11.0.tgz", @@ -2659,6 +3005,13 @@ "touch": "1.0.0", "undefsafe": "0.0.3", "update-notifier": "0.5.0" + }, + "dependencies": { + "es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" + } } }, "nopt": { @@ -2905,6 +3258,12 @@ "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" }, + "private": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", + "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=", + "dev": true + }, "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", @@ -2915,6 +3274,12 @@ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=" }, + "propagate": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-0.4.0.tgz", + "integrity": "sha1-8/zKCm/gZzanulcpZgaWF8EwtIE=", + "dev": true + }, "proxy-addr": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.4.tgz", @@ -3075,6 +3440,12 @@ "set-immediate-shim": "1.0.1" } }, + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "dev": true + }, "regex-cache": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", @@ -3180,6 +3551,12 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.0.tgz", "integrity": "sha512-aSLEDudu6OoRr/2rU609gRmnYboRLxgDG1z9o2Q0os7236FwvcqIOO8r8U5JUEwivZOhDaKlFO4SbPTJYyBEyQ==" }, + "samsam": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.2.1.tgz", + "integrity": "sha1-7dOQk6MYQ3DLhZJDsr3yVefY6mc=", + "dev": true + }, "semver": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", @@ -3252,6 +3629,51 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, + "sinon": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-2.4.1.tgz", + "integrity": "sha512-vFTrO9Wt0ECffDYIPSP/E5bBugt0UjcBQOfQUMh66xzkyPEnhl/vM2LRZi2ajuTdkH07sA6DzrM6KvdvGIH8xw==", + "dev": true, + "requires": { + "diff": "3.2.0", + "formatio": "1.2.0", + "lolex": "1.6.0", + "native-promise-only": "0.8.1", + "path-to-regexp": "1.7.0", + "samsam": "1.2.1", + "text-encoding": "0.6.4", + "type-detect": "4.0.3" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "path-to-regexp": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "dev": true, + "requires": { + "isarray": "0.0.1" + } + } + } + }, + "sinon-chai": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-2.12.0.tgz", + "integrity": "sha512-/J38xAWY5ppvRKuSrdnpVv7rWmxjfma9lL/iYaqn+ge/JynkhM9w8PaFAoGvGv+Tj2nEQWkkS8S4Syt4Lw1K6Q==", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, "slice-ansi": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", @@ -3262,6 +3684,21 @@ "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=" }, + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "dev": true + }, + "source-map-support": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", + "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", + "dev": true, + "requires": { + "source-map": "0.5.6" + } + }, "spdx-correct": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", @@ -3405,6 +3842,12 @@ } } }, + "text-encoding": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", + "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=", + "dev": true + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -3428,6 +3871,12 @@ "os-tmpdir": "1.0.2" } }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, "touch": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/touch/-/touch-1.0.0.tgz", @@ -3436,6 +3885,12 @@ "nopt": "1.0.10" } }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, "tryit": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", @@ -3522,6 +3977,11 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.1.tgz", "integrity": "sha1-Z1Neu2lMHVIldFeYRmUyP1h+jTc=" }, + "whatwg-fetch": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", + "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=" + }, "which": { "version": "1.2.14", "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", diff --git a/package.json b/package.json index feae874..3e6dde2 100644 --- a/package.json +++ b/package.json @@ -14,16 +14,27 @@ "license": "MIT", "dependencies": { "body-parser": "1.17.2", + "dotenv": "4.0.0", + "es6-promise": "4.1.1", "eslint": "4.3.0", "eslint-config-airbnb-base": "11.3.1", "eslint-plugin-import": "2.7.0", "express": "4.15.3", "express-graphql": "0.6.7", "graphql": "0.10.5", - "nodemon": "1.11.0" + "graphql-tools": "1.1.0", + "isomorphic-fetch": "2.2.1", + "nock": "9.0.14", + "node-fetch": "1.7.1", + "nodemon": "1.11.0", + "whatwg-fetch": "2.0.3" }, "devDependencies": { + "babel-register": "6.24.1", "chai": "4.1.0", - "mocha": "3.4.2" + "mocha": "3.4.2", + "nock": "9.0.14", + "sinon": "2.4.1", + "sinon-chai": "2.12.0" } } diff --git a/scripts/test b/scripts/test index 6f3b977..057c033 100755 --- a/scripts/test +++ b/scripts/test @@ -3,4 +3,4 @@ # This script is intended to be run from the HOST # environment, and therefore uses `docker-compose exec` -docker-compose exec api ./node_modules/mocha/bin/mocha test +docker-compose exec api ./node_modules/mocha/bin/mocha test diff --git a/src/models/Issue.js b/src/models/Issue.js new file mode 100644 index 0000000..b8f19fb --- /dev/null +++ b/src/models/Issue.js @@ -0,0 +1,31 @@ +/* eslint-disable no-param-reassign */ +function getAssignee(assignee) { + if (assignee === null) { + assignee = 'Not assigned'; + return assignee; + } + return assignee.login; +} + +function getAssigneeAvatar(assignee) { + if (assignee === null) { + assignee = 'Not assigned'; + return assignee; + } + return assignee.avatar_url; +} + +class Issue { + constructor(issue) { + this.issue = issue; + this.id = this.issue.id; + this.title = this.issue.title; + this.labels = this.issue.labels; + this.state = this.issue.state; + this.number = this.issue.number; + this.assignee = getAssignee(this.issue.assignee); + this.assigneeAvatar = getAssigneeAvatar(this.issue.assignee); + } +} + +module.exports = Issue; diff --git a/src/models/Milestone.js b/src/models/Milestone.js new file mode 100644 index 0000000..a9b86d5 --- /dev/null +++ b/src/models/Milestone.js @@ -0,0 +1,12 @@ +class Milestone { + constructor(milestone) { + this.milestone = milestone; + this.id = this.milestone.id; + this.title = this.milestone.title; + this.openIssues = this.milestone.open_issues; + this.closedIssues = this.milestone.closed_issues; + this.dueOn = this.milestone.due_on; + } +} + +module.exports = Milestone; diff --git a/src/models/Org.js b/src/models/Org.js new file mode 100644 index 0000000..c90e8f1 --- /dev/null +++ b/src/models/Org.js @@ -0,0 +1,46 @@ +/* eslint-disable camelcase */ +const fetch = require('isomorphic-fetch'); +const Repo = require('./Repo'); + +function getJson(response) { + return response.json(); +} + +function addToArray(value) { + return [value]; +} + +function filterRelevantFields(repos) { + return repos.filter(({ id, name, openIssues, issues, pullRequests, milestones }) => ({ + id, + name, + openIssues, + issues, + pullRequests, + milestones, + })); +} + +function createRepoInstances(repos) { + return repos.map(repo => new Repo(repo)); +} + +class Org { + constructor({ id, login, url, avatar_url, repos_url }) { + this.id = id; + this.login = login; + this.url = url; + this.avatarUrl = avatar_url; + this.reposUrl = repos_url; + } + + orgRepos() { + return fetch(this.reposUrl) + .then(getJson) + .then(addToArray) + .then(filterRelevantFields) + .then(createRepoInstances); + } +} + +module.exports = Org; diff --git a/src/models/Orgs.js b/src/models/Orgs.js new file mode 100644 index 0000000..3cca48a --- /dev/null +++ b/src/models/Orgs.js @@ -0,0 +1,53 @@ +const fetch = require('isomorphic-fetch'); +const Org = require('./Org'); + +function getJson(response) { + return response.json(); +} + +function addToArray(value) { + return [value]; +} + +function filterRelevantFields(orgs) { + return orgs.filter(({ id, login, url, repos_url, avatar_url }) => ({ + id, + login, + url, + repos_url, + avatar_url, + })); +} + +function createOrgInstances(orgs) { + return orgs.map(org => new Org(org)); +} + +class Orgs { + constructor(userName, orgName) { + this.orgName = orgName; + this.userOrgsUrl = `https://api.github.com/users/${userName}/orgs?access_token=${process.env.TKN}`; + this.userOrgUrl = `https://api.github.com/orgs/${orgName}?access_token=${process.env.TKN}`; + } + + get orgs() { + return this.orgName ? this.getOrg() : this.getAllUserOrgs(); + } + + getAllUserOrgs() { + return fetch(this.userOrgsUrl) + .then(getJson) + .then(filterRelevantFields) + .then(createOrgInstances); + } + + getOrg() { + return fetch(this.userOrgUrl) + .then(getJson) + .then(addToArray) + .then(filterRelevantFields) + .then(createOrgInstances); + } +} + +module.exports = Orgs; diff --git a/src/models/PullRequest.js b/src/models/PullRequest.js new file mode 100644 index 0000000..8f5c831 --- /dev/null +++ b/src/models/PullRequest.js @@ -0,0 +1,13 @@ +class PullRequest { + constructor(pullRequest) { + this.pullRequest = pullRequest; + this.id = this.pullRequest.id; + this.number = this.pullRequest.number; + this.title = this.pullRequest.title; + this.submittedBy = this.pullRequest.user.login; + this.createdAt = this.pullRequest.created_at; + this.mergeable = this.pullRequest.mergeable; + } +} + +module.exports = PullRequest; diff --git a/src/models/Repo.js b/src/models/Repo.js new file mode 100644 index 0000000..720fbe6 --- /dev/null +++ b/src/models/Repo.js @@ -0,0 +1,94 @@ +/* eslint-disable camelcase, no-prototype-builtins */ +const fetch = require('isomorphic-fetch'); +const Issue = require('./Issue'); +const PullRequest = require('./PullRequest'); +const Milestone = require('./Milestone'); + +function fetchData(url, all) { + if (all) { + return fetch(`${url.slice(0, -9)}?state=all&access_token=${process.env.TKN}`); + } + return fetch(`${url.slice(0, -9)}?access_token=${process.env.TKN}`); +} + +function getJson(response) { + return response.json(); +} + +function filterRelevantFields(issues) { + return issues.filter(({ id, title, labels, state, number, assignee, assigneeAvatar }) => ({ + id, + title, + labels, + state, + number, + assignee, + assigneeAvatar, + })); +} + +function sortByState(data) { + if (data.length === 0) { + return data; + } + + if (data[0].hasOwnProperty('pullRequest')) { + return data.filter(pr => pr.pullRequest.state === 'open'); + } else if (data[0].hasOwnProperty('issue')) { + return data.filter(issue => issue.issue.state === 'open'); + } + return data; +} + +function createIssueInstances(issues) { + return issues.map(issue => new Issue(issue)); +} + +function createPullRequestInstances(pullRequests) { + return pullRequests.map(pullRequest => new PullRequest(pullRequest)); +} + +function createMilestoneInstances(milestones) { + return milestones.map(milestone => new Milestone(milestone)); +} + +class Repo { + constructor({ id, name, open_issues, issues_url, pulls_url, milestones_url }) { + this.id = id; + this.name = name; + this.openIssues = open_issues; + this.issuesUrl = issues_url; + this.pullRequestUrl = pulls_url; + this.milestonesUrl = milestones_url; + } + + get issues() { + return fetchData(this.issuesUrl, true) + .then(getJson) + .then(filterRelevantFields) + .then(createIssueInstances) + .then(sortByState); + } + + get pullRequests() { + return fetchData(this.pullRequestUrl) + .then(getJson) + .then(response => + response.map(pullRequests => fetch(`${pullRequests.url}?access_token=${process.env.TKN}`), + ), + ) + .then(promiseArray => Promise.all(promiseArray)) + .then(responses => responses.map(response => response.json())) + .then(responses => Promise.all(responses)) + .then(createPullRequestInstances) + .then(sortByState); + } + + get milestones() { + return fetchData(this.milestonesUrl) + .then(getJson) + .then(createMilestoneInstances); + } +} + +module.exports = Repo; diff --git a/src/models/Repos.js b/src/models/Repos.js new file mode 100644 index 0000000..713a313 --- /dev/null +++ b/src/models/Repos.js @@ -0,0 +1,70 @@ +const fetch = require('isomorphic-fetch'); +const Repo = require('./Repo'); + +function getJson(response) { + return response.json(); +} + +function addToArray(value) { + return [value]; +} + +function filterRelevantFields(repos) { + return repos.filter(({ id, name, open_issues, issues_url, pulls_url, milestones_url }) => ({ + id, + name, + openIssues: open_issues, + issuesUrl: issues_url, + pullRequestsUrl: pulls_url, + milestonesUrl: milestones_url, + })); +} + +function createRepoInstances(repos) { + return repos.map(repo => new Repo(repo)); +} + +class Repos { + constructor(userName, repoName, orgName) { + this.orgName = orgName; + this.repoName = repoName; + this.userReposUrl = `https://api.github.com/users/${userName}/repos?access_token=${process.env.TKN}`; + this.userRepoUrl = `https://api.github.com/repos/${userName}/${repoName}?access_token=${process.env.TKN}`; + this.orgReposUrl = `https://api.github.com/orgs/${orgName}/repos?access_token=${process.env.TKN}`; + this.orgRepoUrl = `https://api.github.com/repos/${orgName}/${repoName}?access_token=${process.env.TKN}`; + } + + get repos() { + return this.orgName ? this.orgRepos : this.userRepos; + } + + get userRepos() { + if (this.repoName !== undefined) { + return fetch(this.userRepoUrl) + .then(getJson) + .then(addToArray) + .then(filterRelevantFields) + .then(createRepoInstances); + } + return fetch(this.userReposUrl) + .then(getJson) + .then(filterRelevantFields) + .then(createRepoInstances); + } + + get orgRepos() { + if (this.repoName !== undefined && this.orgName !== undefined) { + return fetch(this.orgRepoUrl) + .then(getJson) + .then(addToArray) + .then(filterRelevantFields) + .then(createRepoInstances); + } + return fetch(this.orgReposUrl) + .then(getJson) + .then(filterRelevantFields) + .then(createRepoInstances); + } +} + +module.exports = Repos; diff --git a/src/models/User.js b/src/models/User.js new file mode 100644 index 0000000..f38e0eb --- /dev/null +++ b/src/models/User.js @@ -0,0 +1,21 @@ +require('dotenv').config(); +const fetch = require('isomorphic-fetch'); + +function getJson(response) { + return response.json(); +} + +class User { + constructor(userName) { + this.base = 'https://api.github.com/users/'; + this.userName = userName.userName; + } + + get userAvatar() { + return fetch(`${this.base}${this.userName}?access_token=${process.env.TKN}`) + .then(getJson) + .then(result => result.avatar_url); + } +} + +module.exports = User; diff --git a/src/resolvers/RootResolver.js b/src/resolvers/RootResolver.js new file mode 100644 index 0000000..14d5fb6 --- /dev/null +++ b/src/resolvers/RootResolver.js @@ -0,0 +1,19 @@ +const User = require('../models/User'); +const Orgs = require('../models/Orgs'); +const Repos = require('../models/Repos'); + +const root = { + user(userName) { + return new User(userName); + }, + + orgs({ userName, orgName }) { + return new Orgs(userName, orgName); + }, + + repos({ userName, repoName, orgName }) { + return new Repos(userName, repoName, orgName); + }, +}; + +module.exports = root; diff --git a/src/schema/schema.js b/src/schema/schema.js new file mode 100644 index 0000000..b2398cf --- /dev/null +++ b/src/schema/schema.js @@ -0,0 +1,66 @@ +const { buildSchema } = require('graphql'); + +const schema = buildSchema(` + type User { + userAvatar: String! + } + + type Orgs { + orgs: [Org] + } + + type Org { + id: ID! + login: String! + url: String! + avatarUrl: String! + } + + type Repos { + repos: [Repo] + } + + type Repo { + id: ID! + name: String! + openIssues: Int + issues: [Issue] + pullRequests: [PullRequest] + milestones: [Milestone] + } + + type PullRequest { + id: ID! + title: String + submittedBy: String + createdAt: String! + number: Int! + mergeable: Boolean! + } + + type Issue { + id: ID! + title: String + number: Int + state: String + assignee: String + assigneeAvatar: String + labels: [String] + } + + type Milestone { + id: ID + title: String + openIssues: Int + closedIssues: Int + dueOn: String + } + + type Query { + user(userName: String!): User + orgs(userName: String!, orgName: String): Orgs + repos(userName: String, repoName: String, orgName: String): Repos + } +`); + +module.exports = schema; diff --git a/test/test.js b/test/test.js deleted file mode 100644 index c1f48fb..0000000 --- a/test/test.js +++ /dev/null @@ -1,8 +0,0 @@ -/* eslint-disable no-undef, no-unused-expressions */ -const { expect } = require('chai'); - -describe('the api', () => { - it('should work', () => { - expect(true).to.be.ok; - }); -}); From 3131f36dc5b50f786f6549f3fc7c6fb19951fc95 Mon Sep 17 00:00:00 2001 From: ronanfitz Date: Wed, 9 Aug 2017 16:18:50 -0700 Subject: [PATCH 02/23] Add Label model and remove package-lock.json (#5) * Add file structure * Build file structure * Complete User resolver * Add formatting * Add formatting * Initial Schema refactor * Complete User and Org Resolver * Initial issues model * Complete Repo Resolver and Model * Add Issue to schema * Complete issues model-resolver * Initial pullrequest-model * Add fetchPullRequest to repo * Complete pullrequest model and resolver * Complete milestone model and resolver * Refactor schema and user model * Complete Org model test * Complete User model test * Complete Issue model test * Organize code structure * Complete Milestone model test * Initial repos model test * Refactor Org model test * Complete Repo model test * Refactor User model test * Resolve linting errors * Refactor model format * Remove 'it' from tests * Complete root resolver test * Complete models refactor * Refactor root resolver test for new variable names * Format tests * Complete PullRequest tests * Refactor Orgs and Org model to match new schema layout * Refactor Repos model to match new schema layout * Refactor User and Issue model to match new schema layout * Refactor Repos and Repo to match new schema layout * Remove faulty tests * Remove unused lines from gitignore * Add Label model * Add file structure * Build file structure * Complete User resolver * Add formatting * Add formatting * Initial Schema refactor * Complete User and Org Resolver * Initial issues model * Complete Repo Resolver and Model * Add Issue to schema * Initial pullrequest-model * Add fetchPullRequest to repo * Complete pullrequest model and resolver * Complete milestone model and resolver * Refactor schema and user model * Complete Org model test * Complete User model test * Complete Issue model test * Organize code structure * Complete Milestone model test * Initial repos model test * Refactor Org model test * Complete Repo model test * Refactor User model test * Resolve linting errors * Refactor model format * Remove 'it' from tests * Complete root resolver test * Complete models refactor * Refactor root resolver test for new variable names * Format tests * Complete PullRequest tests * Refactor Orgs and Org model to match new schema layout * Refactor Repos model to match new schema layout * Refactor User and Issue model to match new schema layout * Refactor Repos and Repo to match new schema layout * Remove faulty tests * Remove unused lines from gitignore * Add Label model * Rebase merge conflicts * Remove package-lock.json * Remove duplicate file --- .npmrc | 1 + package-lock.json | 4035 ---------------------------- src/models/Issue.js | 6 + src/models/Label.js | 8 + src/resolvers/RootResolver.js~HEAD | 19 + src/schema/schema.js | 7 +- 6 files changed, 40 insertions(+), 4036 deletions(-) create mode 100644 .npmrc delete mode 100644 package-lock.json create mode 100644 src/models/Label.js create mode 100644 src/resolvers/RootResolver.js~HEAD diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..43c97e7 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +package-lock=false diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 9f5cb16..0000000 --- a/package-lock.json +++ /dev/null @@ -1,4035 +0,0 @@ -{ - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@types/graphql": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/@types/graphql/-/graphql-0.9.4.tgz", - "integrity": "sha512-ob2dps4itT/Le5DbxjssBXtBnloDIRUbkgtAvaB42mJ8pVIWMRuURD9WjnhaEGZ4Ql/EryXMQWeU8Y0EU73QLw==", - "optional": true - }, - "abbrev": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", - "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=" - }, - "accepts": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", - "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", - "requires": { - "mime-types": "2.1.15", - "negotiator": "0.6.1" - } - }, - "acorn": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.1.tgz", - "integrity": "sha512-vOk6uEMctu0vQrvuSqFdJyqj1Q0S5VTDL79qtjo+DhRr+1mmaD+tluFSCZqhvi/JUhXSzoZN2BhtstaPEeE8cw==" - }, - "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", - "requires": { - "acorn": "3.3.0" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=" - } - } - }, - "ajv": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.2.tgz", - "integrity": "sha1-R8aNaehvXZUxA7AHSpQw3GPaXjk=", - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "json-schema-traverse": "0.3.1", - "json-stable-stringify": "1.0.1" - } - }, - "ajv-keywords": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=" - }, - "ansi-escapes": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz", - "integrity": "sha1-W65SvkJIeN2Xg+iRDj/Cki6DyBs=" - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "anymatch": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", - "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", - "requires": { - "arrify": "1.0.1", - "micromatch": "2.3.11" - } - }, - "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "requires": { - "sprintf-js": "1.0.3" - } - }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "requires": { - "arr-flatten": "1.0.3" - } - }, - "arr-flatten": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.3.tgz", - "integrity": "sha1-onTthawIhJtr14R8RYB0XcUa37E=" - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "requires": { - "array-uniq": "1.0.3" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" - }, - "assertion-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", - "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=" - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" - }, - "babel-code-frame": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", - "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", - "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" - } - }, - "babel-core": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz", - "integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=", - "dev": true, - "requires": { - "babel-code-frame": "6.22.0", - "babel-generator": "6.25.0", - "babel-helpers": "6.24.1", - "babel-messages": "6.23.0", - "babel-register": "6.24.1", - "babel-runtime": "6.25.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", - "convert-source-map": "1.5.0", - "debug": "2.6.7", - "json5": "0.5.1", - "lodash": "4.17.4", - "minimatch": "3.0.4", - "path-is-absolute": "1.0.1", - "private": "0.1.7", - "slash": "1.0.0", - "source-map": "0.5.6" - } - }, - "babel-generator": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz", - "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=", - "dev": true, - "requires": { - "babel-messages": "6.23.0", - "babel-runtime": "6.25.0", - "babel-types": "6.25.0", - "detect-indent": "4.0.0", - "jsesc": "1.3.0", - "lodash": "4.17.4", - "source-map": "0.5.6", - "trim-right": "1.0.1" - } - }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true, - "requires": { - "babel-runtime": "6.25.0", - "babel-template": "6.25.0" - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, - "requires": { - "babel-runtime": "6.25.0" - } - }, - "babel-register": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", - "integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=", - "dev": true, - "requires": { - "babel-core": "6.25.0", - "babel-runtime": "6.25.0", - "core-js": "2.4.1", - "home-or-tmp": "2.0.0", - "lodash": "4.17.4", - "mkdirp": "0.5.1", - "source-map-support": "0.4.15" - } - }, - "babel-runtime": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.25.0.tgz", - "integrity": "sha1-M7mOql1IK7AajRqmtDetKwGuxBw=", - "dev": true, - "requires": { - "core-js": "2.4.1", - "regenerator-runtime": "0.10.5" - } - }, - "babel-template": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", - "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=", - "dev": true, - "requires": { - "babel-runtime": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", - "lodash": "4.17.4" - } - }, - "babel-traverse": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", - "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=", - "dev": true, - "requires": { - "babel-code-frame": "6.22.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", - "debug": "2.6.7", - "globals": "9.18.0", - "invariant": "2.2.2", - "lodash": "4.17.4" - } - }, - "babel-types": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", - "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=", - "dev": true, - "requires": { - "babel-runtime": "6.25.0", - "esutils": "2.0.2", - "lodash": "4.17.4", - "to-fast-properties": "1.0.3" - } - }, - "babylon": { - "version": "6.17.4", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz", - "integrity": "sha512-kChlV+0SXkjE0vUn9OZ7pBMWRFd8uq3mZe8x1K6jhuNcAFAtEnjchFAqB+dYEXKyd+JpT6eppRR78QAr5gTsUw==", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "binary-extensions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz", - "integrity": "sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=" - }, - "body-parser": { - "version": "1.17.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.17.2.tgz", - "integrity": "sha1-+IkqvI+eYn1Crtr7yma/WrmRBO4=", - "requires": { - "bytes": "2.4.0", - "content-type": "1.0.2", - "debug": "2.6.7", - "depd": "1.1.0", - "http-errors": "1.6.1", - "iconv-lite": "0.4.15", - "on-finished": "2.3.0", - "qs": "6.4.0", - "raw-body": "2.2.0", - "type-is": "1.6.15" - } - }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" - } - }, - "browser-stdout": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", - "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", - "dev": true - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" - }, - "bytes": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", - "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=" - }, - "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "requires": { - "callsites": "0.2.0" - } - }, - "callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=" - }, - "chai": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.0.tgz", - "integrity": "sha1-MxoDkbVcOvh0CunDt0WLwcOAXm0=", - "dev": true, - "requires": { - "assertion-error": "1.0.2", - "check-error": "1.0.2", - "deep-eql": "2.0.2", - "get-func-name": "2.0.0", - "pathval": "1.1.0", - "type-detect": "4.0.3" - } - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "dev": true - }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "requires": { - "anymatch": "1.3.0", - "async-each": "1.0.1", - "fsevents": "1.1.2", - "glob-parent": "2.0.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" - } - }, - "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==" - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "requires": { - "restore-cursor": "2.0.0" - } - }, - "cli-width": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", - "integrity": "sha1-sjTKIJsp72b8UY2bmNWEewDt8Ao=" - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" - }, - "color-convert": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", - "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "dev": true, - "requires": { - "graceful-readlink": "1.0.1" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.0", - "typedarray": "0.0.6" - } - }, - "configstore": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-1.4.0.tgz", - "integrity": "sha1-w1eB0FAdJowlxUuLF/YkDopPsCE=", - "requires": { - "graceful-fs": "4.1.11", - "mkdirp": "0.5.1", - "object-assign": "4.1.1", - "os-tmpdir": "1.0.2", - "osenv": "0.1.4", - "uuid": "2.0.3", - "write-file-atomic": "1.3.4", - "xdg-basedir": "2.0.0" - } - }, - "contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" - }, - "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" - }, - "content-type": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz", - "integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0=" - }, - "convert-source-map": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", - "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", - "dev": true - }, - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "core-js": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "requires": { - "lru-cache": "4.1.1", - "shebang-command": "1.2.0", - "which": "1.2.14" - } - }, - "debug": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", - "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", - "requires": { - "ms": "2.0.0" - } - }, - "deep-eql": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-2.0.2.tgz", - "integrity": "sha1-sbrAblbwp2d3aG1Qyf63XC7XZ5o=", - "dev": true, - "requires": { - "type-detect": "3.0.0" - }, - "dependencies": { - "type-detect": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-3.0.0.tgz", - "integrity": "sha1-RtDMhVOrt7E6NSsNbeov1Y8tm1U=", - "dev": true - } - } - }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true - }, - "deep-extend": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=" - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" - }, - "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", - "requires": { - "globby": "5.0.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.0", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "rimraf": "2.6.1" - } - }, - "depd": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", - "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=" - }, - "deprecated-decorator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz", - "integrity": "sha1-AJZjF7ehL+kvPMgx91g68ym4bDc=" - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "requires": { - "repeating": "2.0.1" - }, - "dependencies": { - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "1.0.2" - } - } - } - }, - "diff": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", - "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", - "dev": true - }, - "doctrine": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", - "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", - "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" - } - }, - "dotenv": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz", - "integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=" - }, - "duplexer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" - }, - "duplexify": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.0.tgz", - "integrity": "sha1-GqdzAC4VeEV+nZ1KULDMquvL1gQ=", - "requires": { - "end-of-stream": "1.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.0", - "stream-shift": "1.0.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "encodeurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", - "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=" - }, - "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", - "requires": { - "iconv-lite": "0.4.15" - } - }, - "end-of-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.0.0.tgz", - "integrity": "sha1-1FlucCc0qT5A6a+GQxnqvZn/Lw4=", - "requires": { - "once": "1.3.3" - } - }, - "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "requires": { - "is-arrayish": "0.2.1" - } - }, - "es6-promise": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.1.1.tgz", - "integrity": "sha512-OaU1hHjgJf+b0NzsxCg7NdIYERD6Hy/PEmFLTjw+b65scuisG3Kt4QoTvJ66BBkPZ581gr0kpoVzKnxniM8nng==" - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "eslint": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.3.0.tgz", - "integrity": "sha1-/NfJY3a780yF7mftABKimWQrEI8=", - "requires": { - "ajv": "5.2.2", - "babel-code-frame": "6.22.0", - "chalk": "1.1.3", - "concat-stream": "1.6.0", - "cross-spawn": "5.1.0", - "debug": "2.6.8", - "doctrine": "2.0.0", - "eslint-scope": "3.7.1", - "espree": "3.4.3", - "esquery": "1.0.0", - "estraverse": "4.2.0", - "esutils": "2.0.2", - "file-entry-cache": "2.0.0", - "functional-red-black-tree": "1.0.1", - "glob": "7.1.2", - "globals": "9.18.0", - "ignore": "3.3.3", - "imurmurhash": "0.1.4", - "inquirer": "3.2.1", - "is-resolvable": "1.0.0", - "js-yaml": "3.9.0", - "json-stable-stringify": "1.0.1", - "levn": "0.3.0", - "lodash": "4.17.4", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "natural-compare": "1.4.0", - "optionator": "0.8.2", - "path-is-inside": "1.0.2", - "pluralize": "4.0.0", - "progress": "2.0.0", - "require-uncached": "1.0.3", - "semver": "5.3.0", - "strip-json-comments": "2.0.1", - "table": "4.0.1", - "text-table": "0.2.0" - }, - "dependencies": { - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "requires": { - "ms": "2.0.0" - } - } - } - }, - "eslint-config-airbnb-base": { - "version": "11.3.1", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-11.3.1.tgz", - "integrity": "sha512-BXVH7PV5yiLjnkv49iOLJ8dWp+ljZf310ytQpqwrunFADiEbWRyN0tPGDU36FgEbdLvhJDWcJOngYDzPF4shDw==", - "requires": { - "eslint-restricted-globals": "0.1.1" - } - }, - "eslint-import-resolver-node": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz", - "integrity": "sha512-yUtXS15gIcij68NmXmP9Ni77AQuCN0itXbCc/jWd8C6/yKZaSNXicpC8cgvjnxVdmfsosIXrjpzFq7GcDryb6A==", - "requires": { - "debug": "2.6.8", - "resolve": "1.3.3" - }, - "dependencies": { - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "requires": { - "ms": "2.0.0" - } - } - } - }, - "eslint-module-utils": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz", - "integrity": "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==", - "requires": { - "debug": "2.6.8", - "pkg-dir": "1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "requires": { - "ms": "2.0.0" - } - } - } - }, - "eslint-plugin-import": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.7.0.tgz", - "integrity": "sha512-HGYmpU9f/zJaQiKNQOVfHUh2oLWW3STBrCgH0sHTX1xtsxYlH1zjLh8FlQGEIdZSdTbUMaV36WaZ6ImXkenGxQ==", - "requires": { - "builtin-modules": "1.1.1", - "contains-path": "0.1.0", - "debug": "2.6.8", - "doctrine": "1.5.0", - "eslint-import-resolver-node": "0.3.1", - "eslint-module-utils": "2.1.1", - "has": "1.0.1", - "lodash.cond": "4.5.2", - "minimatch": "3.0.4", - "read-pkg-up": "2.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "requires": { - "ms": "2.0.0" - } - }, - "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" - } - } - } - }, - "eslint-restricted-globals": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz", - "integrity": "sha1-NfDVy8ZMLj7WLpO0saevBbp+1Nc=" - }, - "eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", - "requires": { - "esrecurse": "4.2.0", - "estraverse": "4.2.0" - } - }, - "espree": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.4.3.tgz", - "integrity": "sha1-KRC1zNSc6JPC//+qtP2LOjG4I3Q=", - "requires": { - "acorn": "5.1.1", - "acorn-jsx": "3.0.1" - } - }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==" - }, - "esquery": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", - "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", - "requires": { - "estraverse": "4.2.0" - } - }, - "esrecurse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", - "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", - "requires": { - "estraverse": "4.2.0", - "object-assign": "4.1.1" - } - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" - }, - "etag": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz", - "integrity": "sha1-b2Ma7zNtbEY2K1F2QETOIWvjwFE=" - }, - "event-stream": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", - "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", - "requires": { - "duplexer": "0.1.1", - "from": "0.1.7", - "map-stream": "0.1.0", - "pause-stream": "0.0.11", - "split": "0.3.3", - "stream-combiner": "0.0.4", - "through": "2.3.8" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "requires": { - "is-posix-bracket": "0.1.1" - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "requires": { - "fill-range": "2.2.3" - } - }, - "express": { - "version": "4.15.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.15.3.tgz", - "integrity": "sha1-urZdDwOqgMNYQIly/HAPkWlEtmI=", - "requires": { - "accepts": "1.3.3", - "array-flatten": "1.1.1", - "content-disposition": "0.5.2", - "content-type": "1.0.2", - "cookie": "0.3.1", - "cookie-signature": "1.0.6", - "debug": "2.6.7", - "depd": "1.1.0", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "etag": "1.8.0", - "finalhandler": "1.0.3", - "fresh": "0.5.0", - "merge-descriptors": "1.0.1", - "methods": "1.1.2", - "on-finished": "2.3.0", - "parseurl": "1.3.1", - "path-to-regexp": "0.1.7", - "proxy-addr": "1.1.4", - "qs": "6.4.0", - "range-parser": "1.2.0", - "send": "0.15.3", - "serve-static": "1.12.3", - "setprototypeof": "1.0.3", - "statuses": "1.3.1", - "type-is": "1.6.15", - "utils-merge": "1.0.0", - "vary": "1.1.1" - } - }, - "express-graphql": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/express-graphql/-/express-graphql-0.6.7.tgz", - "integrity": "sha512-VXcbGTbHcmLKwrSnCbaa6rahDUV1vMsj5BwCi1IDDDKsg6LMyAldb5UkJAfioAzogbZTDGOCFqm9KwhpQ9Up1A==", - "requires": { - "accepts": "1.3.3", - "content-type": "1.0.2", - "http-errors": "1.6.1", - "raw-body": "2.2.0" - } - }, - "external-editor": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.4.tgz", - "integrity": "sha1-HtkZnanL/i7y96MbL96LDRI2iXI=", - "requires": { - "iconv-lite": "0.4.18", - "jschardet": "1.5.0", - "tmp": "0.0.31" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz", - "integrity": "sha512-sr1ZQph3UwHTR0XftSbK85OvBbxe/abLGzEnPENCQwmHf7sck8Oyu4ob3LgBxWWxRoM+QszeUyl7jbqapu2TqA==" - } - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "requires": { - "is-extglob": "1.0.0" - } - }, - "fast-deep-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", - "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "requires": { - "escape-string-regexp": "1.0.5" - } - }, - "file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", - "requires": { - "flat-cache": "1.2.2", - "object-assign": "4.1.1" - } - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" - }, - "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", - "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" - } - }, - "finalhandler": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.3.tgz", - "integrity": "sha1-70fneVDpmXgOhgIqVg4yF+DQzIk=", - "requires": { - "debug": "2.6.7", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.1", - "statuses": "1.3.1", - "unpipe": "1.0.0" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - } - }, - "flat-cache": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", - "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=", - "requires": { - "circular-json": "0.3.3", - "del": "2.2.2", - "graceful-fs": "4.1.11", - "write": "0.2.1" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "requires": { - "for-in": "1.0.2" - } - }, - "formatio": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.2.0.tgz", - "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=", - "dev": true, - "requires": { - "samsam": "1.2.1" - } - }, - "forwarded": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", - "integrity": "sha1-Ge+YdMSuHCl7zweP3mOgm2aoQ2M=" - }, - "fresh": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", - "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=" - }, - "from": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", - "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=" - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", - "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", - "optional": true, - "requires": { - "nan": "2.6.2", - "node-pre-gyp": "0.6.36" - }, - "dependencies": { - "abbrev": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", - "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=", - "optional": true - }, - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "optional": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "aproba": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.1.tgz", - "integrity": "sha1-ldNgDwdxCqDpKYxyatXs8urLq6s=", - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", - "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", - "optional": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.2.9" - } - }, - "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", - "optional": true - }, - "assert-plus": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", - "optional": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "optional": true - }, - "aws-sign2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", - "optional": true - }, - "aws4": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", - "optional": true - }, - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "requires": { - "inherits": "2.0.3" - } - }, - "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", - "requires": { - "hoek": "2.16.3" - } - }, - "brace-expansion": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", - "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=", - "requires": { - "balanced-match": "0.4.2", - "concat-map": "0.0.1" - } - }, - "buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=" - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "optional": true - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "combined-stream": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", - "requires": { - "delayed-stream": "1.0.0" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "optional": true, - "requires": { - "boom": "2.10.1" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "optional": true - } - } - }, - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", - "optional": true - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "optional": true - }, - "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", - "optional": true - }, - "extsprintf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", - "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=" - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "optional": true - }, - "form-data": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", - "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", - "optional": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fstream": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.1" - } - }, - "fstream-ignore": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", - "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", - "optional": true, - "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" - } - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "optional": true, - "requires": { - "aproba": "1.1.1", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" - } - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "optional": true - } - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" - }, - "har-schema": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", - "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", - "optional": true - }, - "har-validator": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", - "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", - "optional": true, - "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - } - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "optional": true - }, - "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", - "optional": true, - "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" - } - }, - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" - }, - "http-signature": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", - "optional": true, - "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.0", - "sshpk": "1.13.0" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ini": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "optional": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "optional": true - }, - "jodid25519": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", - "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "optional": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "optional": true, - "requires": { - "jsonify": "0.0.0" - } - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "optional": true - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "optional": true - }, - "jsprim": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", - "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", - "optional": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.0.2", - "json-schema": "0.2.3", - "verror": "1.3.6" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "optional": true - } - } - }, - "mime-db": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", - "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=" - }, - "mime-types": { - "version": "2.1.15", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", - "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", - "requires": { - "mime-db": "1.27.0" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "optional": true - }, - "node-pre-gyp": { - "version": "0.6.36", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz", - "integrity": "sha1-22BBEst04NR3VU6bUFsXq936t4Y=", - "optional": true, - "requires": { - "mkdirp": "0.5.1", - "nopt": "4.0.1", - "npmlog": "4.1.0", - "rc": "1.2.1", - "request": "2.81.0", - "rimraf": "2.6.1", - "semver": "5.3.0", - "tar": "2.2.1", - "tar-pack": "3.4.0" - } - }, - "nopt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "optional": true, - "requires": { - "abbrev": "1.1.0", - "osenv": "0.1.4" - } - }, - "npmlog": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz", - "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==", - "optional": true, - "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "optional": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1.0.2" - } - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "optional": true - }, - "osenv": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", - "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", - "optional": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "performance-now": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", - "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", - "optional": true - }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "optional": true - }, - "qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", - "optional": true - }, - "rc": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", - "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", - "optional": true, - "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "optional": true - } - } - }, - "readable-stream": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", - "requires": { - "buffer-shims": "1.0.0", - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "1.0.1", - "util-deprecate": "1.0.2" - } - }, - "request": { - "version": "2.81.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", - "optional": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.15", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.0.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.6.0", - "uuid": "3.0.1" - } - }, - "rimraf": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", - "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", - "requires": { - "glob": "7.1.2" - } - }, - "safe-buffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", - "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=" - }, - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "optional": true - }, - "sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", - "optional": true, - "requires": { - "hoek": "2.16.3" - } - }, - "sshpk": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz", - "integrity": "sha1-/yo+T9BEl1Vf7Zezmg/YL6+zozw=", - "optional": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jodid25519": "1.0.2", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "optional": true - } - } - }, - "string_decoder": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", - "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=", - "requires": { - "safe-buffer": "5.0.1" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "stringstream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", - "optional": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "optional": true - }, - "tar": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - } - }, - "tar-pack": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.0.tgz", - "integrity": "sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ=", - "optional": true, - "requires": { - "debug": "2.6.8", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.2.9", - "rimraf": "2.6.1", - "tar": "2.2.1", - "uid-number": "0.0.6" - } - }, - "tough-cookie": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", - "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", - "optional": true, - "requires": { - "punycode": "1.4.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "optional": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "optional": true - }, - "uid-number": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", - "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", - "optional": true - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "uuid": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", - "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=", - "optional": true - }, - "verror": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", - "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", - "optional": true, - "requires": { - "extsprintf": "1.0.2" - } - }, - "wide-align": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", - "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", - "optional": true, - "requires": { - "string-width": "1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - } - } - }, - "function-bind": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz", - "integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E=" - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" - }, - "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", - "dev": true - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.3.3", - "path-is-absolute": "1.0.1" - } - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "requires": { - "is-glob": "2.0.1" - } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" - }, - "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", - "requires": { - "array-union": "1.0.2", - "arrify": "1.0.1", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, - "got": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/got/-/got-3.3.1.tgz", - "integrity": "sha1-5dDtSvVfw+701WAHdp2YGSvLLso=", - "requires": { - "duplexify": "3.5.0", - "infinity-agent": "2.0.3", - "is-redirect": "1.0.0", - "is-stream": "1.1.0", - "lowercase-keys": "1.0.0", - "nested-error-stacks": "1.0.2", - "object-assign": "3.0.0", - "prepend-http": "1.0.4", - "read-all-stream": "3.1.0", - "timed-out": "2.0.0" - }, - "dependencies": { - "object-assign": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=" - } - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" - }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", - "dev": true - }, - "graphql": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-0.10.5.tgz", - "integrity": "sha512-Q7cx22DiLhwHsEfUnUip1Ww/Vfx7FS0w6+iHItNuN61+XpegHSa3k5U0+6M5BcpavQImBwFiy0z3uYwY7cXMLQ==", - "requires": { - "iterall": "1.1.1" - } - }, - "graphql-tools": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-1.1.0.tgz", - "integrity": "sha1-jYbqaZew3qMIm2LcZV5HFGpmPrs=", - "requires": { - "@types/graphql": "0.9.4", - "deprecated-decorator": "0.1.6", - "lodash": "4.17.4", - "uuid": "3.1.0" - }, - "dependencies": { - "uuid": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", - "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==" - } - } - }, - "growl": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", - "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", - "dev": true - }, - "has": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", - "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", - "requires": { - "function-bind": "1.1.0" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "requires": { - "ansi-regex": "2.1.1" - } - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" - }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "hosted-git-info": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==" - }, - "http-errors": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz", - "integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc=", - "requires": { - "depd": "1.1.0", - "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": "1.3.1" - } - }, - "iconv-lite": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz", - "integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es=" - }, - "ignore": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.3.tgz", - "integrity": "sha1-QyNS5XrM2HqzEQ6C0/6g5HgSFW0=" - }, - "ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=" - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" - }, - "infinity-agent": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/infinity-agent/-/infinity-agent-2.0.3.tgz", - "integrity": "sha1-ReDi/3qesDCyfWK3SzdEt6esQhY=" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "1.3.3", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ini": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=" - }, - "inquirer": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.2.1.tgz", - "integrity": "sha512-QgW3eiPN8gpj/K5vVpHADJJgrrF0ho/dZGylikGX7iqAdRgC9FVKYKWFLx6hZDBFcOLEoSqINYrVPeFAeG/PdA==", - "requires": { - "ansi-escapes": "2.0.0", - "chalk": "2.0.1", - "cli-cursor": "2.1.0", - "cli-width": "2.1.0", - "external-editor": "2.0.4", - "figures": "2.0.0", - "lodash": "4.17.4", - "mute-stream": "0.0.7", - "run-async": "2.3.0", - "rx-lite": "4.0.8", - "rx-lite-aggregates": "4.0.8", - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "through": "2.3.8" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "requires": { - "color-convert": "1.9.0" - } - }, - "chalk": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", - "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.2.1" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "3.0.0" - } - }, - "supports-color": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz", - "integrity": "sha512-qxzYsob3yv6U+xMzPrv170y8AwGP7i74g+pbixCfD6rgso8BscLT2qXIuz6TpOaiJZ3mFgT5O9lyT9nMU4LfaA==", - "requires": { - "has-flag": "2.0.0" - } - } - } - }, - "invariant": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", - "dev": true, - "requires": { - "loose-envify": "1.3.1" - } - }, - "ipaddr.js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.3.0.tgz", - "integrity": "sha1-HgOlL9rYOou7KyXL9JmLTP/NPew=" - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "requires": { - "binary-extensions": "1.8.0" - } - }, - "is-buffer": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", - "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=" - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "requires": { - "builtin-modules": "1.1.1" - } - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "requires": { - "is-primitive": "2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "requires": { - "is-extglob": "1.0.0" - } - }, - "is-npm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", - "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=" - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "requires": { - "kind-of": "3.2.2" - } - }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=" - }, - "is-path-in-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", - "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", - "requires": { - "is-path-inside": "1.0.0" - } - }, - "is-path-inside": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", - "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", - "requires": { - "path-is-inside": "1.0.2" - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" - }, - "is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" - }, - "is-resolvable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", - "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", - "requires": { - "tryit": "1.0.3" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "requires": { - "isarray": "1.0.0" - } - }, - "isomorphic-fetch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", - "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", - "requires": { - "node-fetch": "1.7.1", - "whatwg-fetch": "2.0.3" - } - }, - "iterall": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.1.1.tgz", - "integrity": "sha1-9/CvEemgTsZCYmD1AZ2fzKTVAhQ=" - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" - }, - "js-yaml": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.9.0.tgz", - "integrity": "sha512-0LoUNELX4S+iofCT8f4uEHIiRBR+c2AINyC8qRWfC6QNruLtxVZRJaPcu/xwMgFIgDxF25tGHaDjvxzJCNE9yw==", - "requires": { - "argparse": "1.0.9", - "esprima": "4.0.0" - } - }, - "jschardet": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.5.0.tgz", - "integrity": "sha512-+Q8JsoEQbrdE+a/gg1F9XO92gcKXgpE5UACqr0sIubjDmBEkd+OOWPGzQeMrWSLxd73r4dHxBeRW7edHu5LmJQ==" - }, - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" - }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "requires": { - "jsonify": "0.0.0" - } - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.5" - } - }, - "latest-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-1.0.1.tgz", - "integrity": "sha1-cs/Ebj6NG+ZR4eu1Tqn26pbzdLs=", - "requires": { - "package-json": "1.2.0" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "requires": { - "prelude-ls": "1.1.2", - "type-check": "0.3.2" - } - }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" - }, - "dependencies": { - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - } - } - }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" - }, - "lodash._baseassign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", - "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", - "requires": { - "lodash._basecopy": "3.0.1", - "lodash.keys": "3.1.2" - } - }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=" - }, - "lodash._basecreate": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", - "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", - "dev": true - }, - "lodash._bindcallback": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", - "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=" - }, - "lodash._createassigner": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz", - "integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=", - "requires": { - "lodash._bindcallback": "3.0.1", - "lodash._isiterateecall": "3.0.9", - "lodash.restparam": "3.6.1" - } - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=" - }, - "lodash.assign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz", - "integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=", - "requires": { - "lodash._baseassign": "3.2.0", - "lodash._createassigner": "3.1.1", - "lodash.keys": "3.1.2" - } - }, - "lodash.cond": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", - "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=" - }, - "lodash.create": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", - "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", - "dev": true, - "requires": { - "lodash._baseassign": "3.2.0", - "lodash._basecreate": "3.0.3", - "lodash._isiterateecall": "3.0.9" - } - }, - "lodash.defaults": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-3.1.2.tgz", - "integrity": "sha1-xzCLGNv4vJNy1wGnNJPGEZK9Liw=", - "requires": { - "lodash.assign": "3.2.0", - "lodash.restparam": "3.6.1" - } - }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" - }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" - }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "requires": { - "lodash._getnative": "3.9.1", - "lodash.isarguments": "3.1.0", - "lodash.isarray": "3.0.4" - } - }, - "lodash.restparam": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", - "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=" - }, - "lolex": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.6.0.tgz", - "integrity": "sha1-OpoCg0UqR9dDnnJzG54H1zhuSfY=", - "dev": true - }, - "loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", - "dev": true, - "requires": { - "js-tokens": "3.0.2" - } - }, - "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=" - }, - "lru-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } - }, - "map-stream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", - "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=" - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.3" - } - }, - "mime": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=" - }, - "mime-db": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", - "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=" - }, - "mime-types": { - "version": "2.1.15", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", - "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", - "requires": { - "mime-db": "1.27.0" - } - }, - "mimic-fn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=" - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "1.1.8" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "requires": { - "minimist": "0.0.8" - } - }, - "mocha": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.0.tgz", - "integrity": "sha512-pIU2PJjrPYvYRqVpjXzj76qltO9uBYI7woYAMoxbSefsa+vqAfptjoeevd6bUgwD0mPIO+hv9f7ltvsNreL2PA==", - "dev": true, - "requires": { - "browser-stdout": "1.3.0", - "commander": "2.9.0", - "debug": "2.6.8", - "diff": "3.2.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.1", - "growl": "1.9.2", - "json3": "3.3.2", - "lodash.create": "3.1.1", - "mkdirp": "0.5.1", - "supports-color": "3.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", - "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.3.3", - "path-is-absolute": "1.0.1" - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "supports-color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", - "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" - }, - "nan": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", - "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", - "optional": true - }, - "native-promise-only": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", - "integrity": "sha1-IKMYwwy0X3H+et+/eyHJnBRy7xE=", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" - }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" - }, - "nested-error-stacks": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-1.0.2.tgz", - "integrity": "sha1-GfYZWRUZ8JZ2mlupqG5u7sgjw88=", - "requires": { - "inherits": "2.0.3" - } - }, - "nock": { - "version": "9.0.14", - "resolved": "https://registry.npmjs.org/nock/-/nock-9.0.14.tgz", - "integrity": "sha1-IhFVAlMXPOKYvNifyoJeg4E8pys=", - "dev": true, - "requires": { - "chai": "3.5.0", - "debug": "2.6.7", - "deep-equal": "1.0.1", - "json-stringify-safe": "5.0.1", - "lodash": "4.17.4", - "mkdirp": "0.5.1", - "propagate": "0.4.0", - "qs": "6.4.0", - "semver": "5.3.0" - }, - "dependencies": { - "chai": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", - "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", - "dev": true, - "requires": { - "assertion-error": "1.0.2", - "deep-eql": "0.1.3", - "type-detect": "1.0.0" - } - }, - "deep-eql": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", - "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", - "dev": true, - "requires": { - "type-detect": "0.1.1" - }, - "dependencies": { - "type-detect": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", - "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", - "dev": true - } - } - }, - "type-detect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", - "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=", - "dev": true - } - } - }, - "node-fetch": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.1.tgz", - "integrity": "sha512-j8XsFGCLw79vWXkZtMSmmLaOk9z5SQ9bV/tkbZVCqvgwzrjAGq66igobLofHtF63NvMTp2WjytpsNTGKa+XRIQ==", - "requires": { - "encoding": "0.1.12", - "is-stream": "1.1.0" - } - }, - "nodemon": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.11.0.tgz", - "integrity": "sha1-ImxWK9KnsT09dRi0mtSCijYj0Gw=", - "requires": { - "chokidar": "1.7.0", - "debug": "2.6.7", - "es6-promise": "3.3.1", - "ignore-by-default": "1.0.1", - "lodash.defaults": "3.1.2", - "minimatch": "3.0.4", - "ps-tree": "1.1.0", - "touch": "1.0.0", - "undefsafe": "0.0.3", - "update-notifier": "0.5.0" - }, - "dependencies": { - "es6-promise": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", - "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" - } - } - }, - "nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", - "requires": { - "abbrev": "1.1.0" - } - }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "requires": { - "hosted-git-info": "2.5.0", - "is-builtin-module": "1.0.0", - "semver": "5.3.0", - "validate-npm-package-license": "3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "requires": { - "remove-trailing-separator": "1.0.2" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" - } - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", - "requires": { - "wrappy": "1.0.2" - } - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "requires": { - "mimic-fn": "1.1.0" - } - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "requires": { - "deep-is": "0.1.3", - "fast-levenshtein": "2.0.6", - "levn": "0.3.0", - "prelude-ls": "1.1.2", - "type-check": "0.3.2", - "wordwrap": "1.0.0" - } - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" - }, - "osenv": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", - "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "p-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=" - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "requires": { - "p-limit": "1.1.0" - } - }, - "package-json": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-1.2.0.tgz", - "integrity": "sha1-yOysCUInzfdqMWh07QXifMk5oOA=", - "requires": { - "got": "3.3.1", - "registry-url": "3.1.0" - } - }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "requires": { - "error-ex": "1.3.1" - } - }, - "parseurl": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", - "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=" - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "2.0.1" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" - }, - "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "requires": { - "pify": "2.3.0" - } - }, - "pathval": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", - "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", - "dev": true - }, - "pause-stream": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", - "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", - "requires": { - "through": "2.3.8" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { - "pinkie": "2.0.4" - } - }, - "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "requires": { - "find-up": "1.1.2" - } - }, - "pluralize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-4.0.0.tgz", - "integrity": "sha1-WbcIwcAZCi9pLxx2GMRGsFL9F2I=" - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" - }, - "private": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", - "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=", - "dev": true - }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" - }, - "progress": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", - "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=" - }, - "propagate": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/propagate/-/propagate-0.4.0.tgz", - "integrity": "sha1-8/zKCm/gZzanulcpZgaWF8EwtIE=", - "dev": true - }, - "proxy-addr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.4.tgz", - "integrity": "sha1-J+VF9pYKRKYn2bREZ+NcG2tM4vM=", - "requires": { - "forwarded": "0.1.0", - "ipaddr.js": "1.3.0" - } - }, - "ps-tree": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.1.0.tgz", - "integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=", - "requires": { - "event-stream": "3.3.4" - } - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, - "qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=" - }, - "randomatic": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", - "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "requires": { - "is-buffer": "1.1.5" - } - } - } - }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" - }, - "raw-body": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.2.0.tgz", - "integrity": "sha1-mUl2z2pQlqQRYoQEkvC9xdbn+5Y=", - "requires": { - "bytes": "2.4.0", - "iconv-lite": "0.4.15", - "unpipe": "1.0.0" - } - }, - "rc": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", - "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", - "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - } - } - }, - "read-all-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", - "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", - "requires": { - "pinkie-promise": "2.0.1", - "readable-stream": "2.3.0" - } - }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "requires": { - "load-json-file": "2.0.0", - "normalize-package-data": "2.4.0", - "path-type": "2.0.0" - } - }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "requires": { - "find-up": "2.1.0", - "read-pkg": "2.0.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "2.0.0" - } - } - } - }, - "readable-stream": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.0.tgz", - "integrity": "sha512-c7KMXGd4b48nN3OJ1U9qOsn6pXNzf6kLd3kdZCkg2sxAcoiufInqF0XckwEnlrcwuaYwonlNK8GQUIOC/WC7sg==", - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.0", - "string_decoder": "1.0.2", - "util-deprecate": "1.0.2" - } - }, - "readdirp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", - "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", - "requires": { - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "readable-stream": "2.3.0", - "set-immediate-shim": "1.0.1" - } - }, - "regenerator-runtime": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", - "dev": true - }, - "regex-cache": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", - "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", - "requires": { - "is-equal-shallow": "0.1.3", - "is-primitive": "2.0.0" - } - }, - "registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", - "requires": { - "rc": "1.2.1" - } - }, - "remove-trailing-separator": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", - "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=" - }, - "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" - }, - "repeating": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", - "integrity": "sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw=", - "requires": { - "is-finite": "1.0.2" - } - }, - "require-uncached": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "requires": { - "caller-path": "0.1.0", - "resolve-from": "1.0.1" - } - }, - "resolve": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", - "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", - "requires": { - "path-parse": "1.0.5" - } - }, - "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=" - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "requires": { - "onetime": "2.0.1", - "signal-exit": "3.0.2" - } - }, - "rimraf": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", - "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", - "requires": { - "glob": "7.1.2" - } - }, - "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "requires": { - "is-promise": "2.1.0" - } - }, - "rx-lite": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=" - }, - "rx-lite-aggregates": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", - "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", - "requires": { - "rx-lite": "4.0.8" - } - }, - "safe-buffer": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.0.tgz", - "integrity": "sha512-aSLEDudu6OoRr/2rU609gRmnYboRLxgDG1z9o2Q0os7236FwvcqIOO8r8U5JUEwivZOhDaKlFO4SbPTJYyBEyQ==" - }, - "samsam": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.2.1.tgz", - "integrity": "sha1-7dOQk6MYQ3DLhZJDsr3yVefY6mc=", - "dev": true - }, - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" - }, - "semver-diff": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", - "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", - "requires": { - "semver": "5.3.0" - } - }, - "send": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/send/-/send-0.15.3.tgz", - "integrity": "sha1-UBP5+ZAj31DRvZiSwZ4979HVMwk=", - "requires": { - "debug": "2.6.7", - "depd": "1.1.0", - "destroy": "1.0.4", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "etag": "1.8.0", - "fresh": "0.5.0", - "http-errors": "1.6.1", - "mime": "1.3.4", - "ms": "2.0.0", - "on-finished": "2.3.0", - "range-parser": "1.2.0", - "statuses": "1.3.1" - } - }, - "serve-static": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.3.tgz", - "integrity": "sha1-n0uhni8wMMVH+K+ZEHg47DjVseI=", - "requires": { - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "parseurl": "1.3.1", - "send": "0.15.3" - } - }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" - }, - "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "requires": { - "shebang-regex": "1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" - }, - "sinon": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-2.4.1.tgz", - "integrity": "sha512-vFTrO9Wt0ECffDYIPSP/E5bBugt0UjcBQOfQUMh66xzkyPEnhl/vM2LRZi2ajuTdkH07sA6DzrM6KvdvGIH8xw==", - "dev": true, - "requires": { - "diff": "3.2.0", - "formatio": "1.2.0", - "lolex": "1.6.0", - "native-promise-only": "0.8.1", - "path-to-regexp": "1.7.0", - "samsam": "1.2.1", - "text-encoding": "0.6.4", - "type-detect": "4.0.3" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "path-to-regexp": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", - "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", - "dev": true, - "requires": { - "isarray": "0.0.1" - } - } - } - }, - "sinon-chai": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-2.12.0.tgz", - "integrity": "sha512-/J38xAWY5ppvRKuSrdnpVv7rWmxjfma9lL/iYaqn+ge/JynkhM9w8PaFAoGvGv+Tj2nEQWkkS8S4Syt4Lw1K6Q==", - "dev": true - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true - }, - "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=" - }, - "slide": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=" - }, - "source-map": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", - "dev": true - }, - "source-map-support": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", - "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", - "dev": true, - "requires": { - "source-map": "0.5.6" - } - }, - "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", - "requires": { - "spdx-license-ids": "1.2.2" - } - }, - "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" - }, - "spdx-license-ids": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" - }, - "split": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", - "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", - "requires": { - "through": "2.3.8" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" - }, - "stream-combiner": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", - "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", - "requires": { - "duplexer": "0.1.1" - } - }, - "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" - }, - "string_decoder": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.2.tgz", - "integrity": "sha1-sp4fThEl+pehA4K4pTNze3SR4Xk=", - "requires": { - "safe-buffer": "5.0.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", - "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=" - } - } - }, - "string-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", - "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=", - "requires": { - "strip-ansi": "3.0.1" - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "3.0.0" - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - }, - "table": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/table/-/table-4.0.1.tgz", - "integrity": "sha1-qBFsEz+sLGH0pCCrbN9cTWHw5DU=", - "requires": { - "ajv": "4.11.8", - "ajv-keywords": "1.5.1", - "chalk": "1.1.3", - "lodash": "4.17.4", - "slice-ansi": "0.0.4", - "string-width": "2.1.1" - }, - "dependencies": { - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - } - } - }, - "text-encoding": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", - "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=", - "dev": true - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - }, - "timed-out": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-2.0.0.tgz", - "integrity": "sha1-84sK6B03R9YoAB9B2vxlKs5nHAo=" - }, - "tmp": { - "version": "0.0.31", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", - "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", - "requires": { - "os-tmpdir": "1.0.2" - } - }, - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - }, - "touch": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-1.0.0.tgz", - "integrity": "sha1-RJy+LbrlqMgDjjDXH6D/RklHxN4=", - "requires": { - "nopt": "1.0.10" - } - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, - "tryit": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", - "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=" - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "requires": { - "prelude-ls": "1.1.2" - } - }, - "type-detect": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.3.tgz", - "integrity": "sha1-Dj8mcLRAmbC0bChNE2p+9Jx0wuo=", - "dev": true - }, - "type-is": { - "version": "1.6.15", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", - "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", - "requires": { - "media-typer": "0.3.0", - "mime-types": "2.1.15" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, - "undefsafe": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-0.0.3.tgz", - "integrity": "sha1-7Mo6A+VrmvFzhbqsgSrIO5lKli8=" - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "update-notifier": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-0.5.0.tgz", - "integrity": "sha1-B7XcIGazYnqztPUwEw9+3doHpMw=", - "requires": { - "chalk": "1.1.3", - "configstore": "1.4.0", - "is-npm": "1.0.0", - "latest-version": "1.0.1", - "repeating": "1.1.3", - "semver-diff": "2.1.0", - "string-length": "1.0.1" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "utils-merge": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", - "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=" - }, - "uuid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=" - }, - "validate-npm-package-license": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", - "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" - } - }, - "vary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.1.tgz", - "integrity": "sha1-Z1Neu2lMHVIldFeYRmUyP1h+jTc=" - }, - "whatwg-fetch": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", - "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=" - }, - "which": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", - "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", - "requires": { - "isexe": "2.0.0" - } - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", - "requires": { - "mkdirp": "0.5.1" - } - }, - "write-file-atomic": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", - "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "slide": "1.1.6" - } - }, - "xdg-basedir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz", - "integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=", - "requires": { - "os-homedir": "1.0.2" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - } - } -} diff --git a/src/models/Issue.js b/src/models/Issue.js index b8f19fb..34b3dcf 100644 --- a/src/models/Issue.js +++ b/src/models/Issue.js @@ -1,4 +1,6 @@ /* eslint-disable no-param-reassign */ +const Label = require('./Label'); + function getAssignee(assignee) { if (assignee === null) { assignee = 'Not assigned'; @@ -26,6 +28,10 @@ class Issue { this.assignee = getAssignee(this.issue.assignee); this.assigneeAvatar = getAssigneeAvatar(this.issue.assignee); } + + get label() { + return this.labels.map(label => new Label(label)); + } } module.exports = Issue; diff --git a/src/models/Label.js b/src/models/Label.js new file mode 100644 index 0000000..164ffc3 --- /dev/null +++ b/src/models/Label.js @@ -0,0 +1,8 @@ +class Label { + constructor(label) { + this.name = label.name; + this.color = label.color; + } +} + +module.exports = Label; diff --git a/src/resolvers/RootResolver.js~HEAD b/src/resolvers/RootResolver.js~HEAD new file mode 100644 index 0000000..14d5fb6 --- /dev/null +++ b/src/resolvers/RootResolver.js~HEAD @@ -0,0 +1,19 @@ +const User = require('../models/User'); +const Orgs = require('../models/Orgs'); +const Repos = require('../models/Repos'); + +const root = { + user(userName) { + return new User(userName); + }, + + orgs({ userName, orgName }) { + return new Orgs(userName, orgName); + }, + + repos({ userName, repoName, orgName }) { + return new Repos(userName, repoName, orgName); + }, +}; + +module.exports = root; diff --git a/src/schema/schema.js b/src/schema/schema.js index b2398cf..c24c38b 100644 --- a/src/schema/schema.js +++ b/src/schema/schema.js @@ -45,7 +45,12 @@ const schema = buildSchema(` state: String assignee: String assigneeAvatar: String - labels: [String] + labels: [Label] + } + + type Label { + name: String + color: String } type Milestone { From afa82f730802cbdce9191a52dad374662470b542 Mon Sep 17 00:00:00 2001 From: Michael Murray Date: Fri, 11 Aug 2017 14:53:12 -0700 Subject: [PATCH 03/23] Initial AWS configuration (#9) * Add file structure * Build file structure * Complete User resolver * Add formatting * Add formatting * Initial Schema refactor * Complete User and Org Resolver * Initial issues model * Complete Repo Resolver and Model * Add Issue to schema * Complete issues model-resolver * Initial pullrequest-model * Add fetchPullRequest to repo * Complete pullrequest model and resolver * Complete milestone model and resolver * Refactor schema and user model * Complete Org model test * Complete User model test * Complete Issue model test * Organize code structure * Complete Milestone model test * Initial repos model test * Refactor Org model test * Complete Repo model test * Refactor User model test * Resolve linting errors * Refactor model format * Remove 'it' from tests * Complete root resolver test * Complete models refactor * Refactor root resolver test for new variable names * Format tests * Complete PullRequest tests * Fix PR issues * Format schema * Format RootResolver * Refactor Orgs and Org model to match new schema layout * Refactor Repos model to match new schema layout * Refactor User and Issue model to match new schema layout * Refactor Repos and Repo to match new schema layout * Remove faulty tests * Remove unused lines from gitignore * Complete CI/CD integration files * Edit filenames * Edit .gitignore * Edit .gitignore * Edit .gitignore * Add AWS key * Fix schema error * Add task role --- .gitignore | 1 + aws-deployment.env.encrypted | 1 + codeship-services.yml | 9 + codeship-steps.yml | 12 + dockercfg.encrypted | 1 + index.js | 15 +- package-lock.json | 4035 ++++++++++++++++++++++++++++++++++ package.json | 79 +- scripts/production-lint | 6 + scripts/production-test | 6 + src/models/Issue.js | 1 + tasks/github-api.json | 21 + test/RootResolver.test.js | 346 +++ 13 files changed, 4489 insertions(+), 44 deletions(-) create mode 100644 aws-deployment.env.encrypted create mode 100644 codeship-services.yml create mode 100644 codeship-steps.yml create mode 100644 dockercfg.encrypted create mode 100644 package-lock.json create mode 100755 scripts/production-lint create mode 100755 scripts/production-test create mode 100644 tasks/github-api.json create mode 100644 test/RootResolver.test.js diff --git a/.gitignore b/.gitignore index 37d7e73..5a09740 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ node_modules .env +codeship.aes diff --git a/aws-deployment.env.encrypted b/aws-deployment.env.encrypted new file mode 100644 index 0000000..d3cf858 --- /dev/null +++ b/aws-deployment.env.encrypted @@ -0,0 +1 @@ +SUXoAuKCVo4yPYhcWodaZD52AjqXzCKLqRL1Rh8BIIOZNKpmy0ov0foWBdLKJyAYJ8nvEuqLMP6Sr2EO1izYAmg4MCpUL9jFSo2sG8tMCNN49pgEVJ2zJhPTaXoODkQXkTKyiUTCwh0MBN55w1VKwGfTcJB5D8AnjGRTtH0R/rsOYZ1UPzAf9gCXTurdJamtvFYR diff --git a/codeship-services.yml b/codeship-services.yml new file mode 100644 index 0000000..76ed3cd --- /dev/null +++ b/codeship-services.yml @@ -0,0 +1,9 @@ +awsdeployment: + image: codeship/aws-deployment + encrypted_env_file: aws-deployment.env.encrypted + volumes: + - ./:/deploy + +github-api: + build: + dockerfile: Dockerfile diff --git a/codeship-steps.yml b/codeship-steps.yml new file mode 100644 index 0000000..54e2622 --- /dev/null +++ b/codeship-steps.yml @@ -0,0 +1,12 @@ +- service: github-api + command: npm run production-lint +- service: github-api + command: npm run production-test +- service: github-api + type: push + image_name: databraiddb/github-api + encrypted_dockercfg_path: dockercfg.encrypted +- service: awsdeployment + command: aws ecs register-task-definition --cli-input-json file:///deploy/tasks/github-api.json +- service: awsdeployment + command: aws ecs update-service --cluster databraid-cluster --service github-api-service --task-definition github-api diff --git a/dockercfg.encrypted b/dockercfg.encrypted new file mode 100644 index 0000000..1a934fd --- /dev/null +++ b/dockercfg.encrypted @@ -0,0 +1 @@ +2HCMjaqyIsNMK3M8KqsKbFlnS3ETUdrsAdgu7JHahLoy03zn7sdhAp2YAck/RA0udbHtRE5akofUWhEv71CIAh+ZT8FjTOv4OsiAVzVE/2ozVinx7zAmyzlT9kbij6dISLyS34kITRFOt7ZPKgU2XH83Ovcw/F0dIxrueyE38AsXrNmNpecU2SoReHwlnUAi5cRujLYqIB4HIHo6tqqkG7O+8CWLTEA= \ No newline at end of file diff --git a/index.js b/index.js index 4c692d0..6367423 100644 --- a/index.js +++ b/index.js @@ -10,17 +10,20 @@ const PORT = process.env.PORT || 8000; app.use(bodyParser.json()); -app.use('/graphql', graphqlHTTP({ - schema, - rootValue: root, - graphiql: true, -})); + +app.use( + '/graphql', + graphqlHTTP({ + schema, + rootValue: root, + graphiql: true, + }), +); app.use((req, res) => { res.sendStatus(404); }); - if (!module.parent) { app.listen(PORT, () => { /* eslint-disable no-console */ diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..9f5cb16 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4035 @@ +{ + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/graphql": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/@types/graphql/-/graphql-0.9.4.tgz", + "integrity": "sha512-ob2dps4itT/Le5DbxjssBXtBnloDIRUbkgtAvaB42mJ8pVIWMRuURD9WjnhaEGZ4Ql/EryXMQWeU8Y0EU73QLw==", + "optional": true + }, + "abbrev": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", + "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=" + }, + "accepts": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", + "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", + "requires": { + "mime-types": "2.1.15", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.1.tgz", + "integrity": "sha512-vOk6uEMctu0vQrvuSqFdJyqj1Q0S5VTDL79qtjo+DhRr+1mmaD+tluFSCZqhvi/JUhXSzoZN2BhtstaPEeE8cw==" + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "requires": { + "acorn": "3.3.0" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=" + } + } + }, + "ajv": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.2.tgz", + "integrity": "sha1-R8aNaehvXZUxA7AHSpQw3GPaXjk=", + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "json-schema-traverse": "0.3.1", + "json-stable-stringify": "1.0.1" + } + }, + "ajv-keywords": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", + "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=" + }, + "ansi-escapes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz", + "integrity": "sha1-W65SvkJIeN2Xg+iRDj/Cki6DyBs=" + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "anymatch": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", + "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", + "requires": { + "arrify": "1.0.1", + "micromatch": "2.3.11" + } + }, + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "requires": { + "sprintf-js": "1.0.3" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "requires": { + "arr-flatten": "1.0.3" + } + }, + "arr-flatten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.3.tgz", + "integrity": "sha1-onTthawIhJtr14R8RYB0XcUa37E=" + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, + "assertion-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", + "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=" + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" + }, + "babel-code-frame": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", + "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "babel-core": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz", + "integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=", + "dev": true, + "requires": { + "babel-code-frame": "6.22.0", + "babel-generator": "6.25.0", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.24.1", + "babel-runtime": "6.25.0", + "babel-template": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0", + "babylon": "6.17.4", + "convert-source-map": "1.5.0", + "debug": "2.6.7", + "json5": "0.5.1", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.7", + "slash": "1.0.0", + "source-map": "0.5.6" + } + }, + "babel-generator": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz", + "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=", + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.25.0", + "babel-types": "6.25.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.6", + "trim-right": "1.0.1" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "6.25.0", + "babel-template": "6.25.0" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.25.0" + } + }, + "babel-register": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", + "integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=", + "dev": true, + "requires": { + "babel-core": "6.25.0", + "babel-runtime": "6.25.0", + "core-js": "2.4.1", + "home-or-tmp": "2.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "source-map-support": "0.4.15" + } + }, + "babel-runtime": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.25.0.tgz", + "integrity": "sha1-M7mOql1IK7AajRqmtDetKwGuxBw=", + "dev": true, + "requires": { + "core-js": "2.4.1", + "regenerator-runtime": "0.10.5" + } + }, + "babel-template": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", + "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=", + "dev": true, + "requires": { + "babel-runtime": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0", + "babylon": "6.17.4", + "lodash": "4.17.4" + } + }, + "babel-traverse": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", + "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=", + "dev": true, + "requires": { + "babel-code-frame": "6.22.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.25.0", + "babel-types": "6.25.0", + "babylon": "6.17.4", + "debug": "2.6.7", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + } + }, + "babel-types": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", + "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=", + "dev": true, + "requires": { + "babel-runtime": "6.25.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.17.4", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz", + "integrity": "sha512-kChlV+0SXkjE0vUn9OZ7pBMWRFd8uq3mZe8x1K6jhuNcAFAtEnjchFAqB+dYEXKyd+JpT6eppRR78QAr5gTsUw==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "binary-extensions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz", + "integrity": "sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=" + }, + "body-parser": { + "version": "1.17.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.17.2.tgz", + "integrity": "sha1-+IkqvI+eYn1Crtr7yma/WrmRBO4=", + "requires": { + "bytes": "2.4.0", + "content-type": "1.0.2", + "debug": "2.6.7", + "depd": "1.1.0", + "http-errors": "1.6.1", + "iconv-lite": "0.4.15", + "on-finished": "2.3.0", + "qs": "6.4.0", + "raw-body": "2.2.0", + "type-is": "1.6.15" + } + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "browser-stdout": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + }, + "bytes": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", + "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=" + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "requires": { + "callsites": "0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=" + }, + "chai": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.0.tgz", + "integrity": "sha1-MxoDkbVcOvh0CunDt0WLwcOAXm0=", + "dev": true, + "requires": { + "assertion-error": "1.0.2", + "check-error": "1.0.2", + "deep-eql": "2.0.2", + "get-func-name": "2.0.0", + "pathval": "1.1.0", + "type-detect": "4.0.3" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "requires": { + "anymatch": "1.3.0", + "async-each": "1.0.1", + "fsevents": "1.1.2", + "glob-parent": "2.0.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "2.0.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==" + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "requires": { + "restore-cursor": "2.0.0" + } + }, + "cli-width": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", + "integrity": "sha1-sjTKIJsp72b8UY2bmNWEewDt8Ao=" + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "color-convert": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", + "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "dev": true, + "requires": { + "graceful-readlink": "1.0.1" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.0", + "typedarray": "0.0.6" + } + }, + "configstore": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-1.4.0.tgz", + "integrity": "sha1-w1eB0FAdJowlxUuLF/YkDopPsCE=", + "requires": { + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1", + "object-assign": "4.1.1", + "os-tmpdir": "1.0.2", + "osenv": "0.1.4", + "uuid": "2.0.3", + "write-file-atomic": "1.3.4", + "xdg-basedir": "2.0.0" + } + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" + }, + "content-type": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz", + "integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0=" + }, + "convert-source-map": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", + "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", + "dev": true + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "core-js": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", + "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.2.14" + } + }, + "debug": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", + "requires": { + "ms": "2.0.0" + } + }, + "deep-eql": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-2.0.2.tgz", + "integrity": "sha1-sbrAblbwp2d3aG1Qyf63XC7XZ5o=", + "dev": true, + "requires": { + "type-detect": "3.0.0" + }, + "dependencies": { + "type-detect": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-3.0.0.tgz", + "integrity": "sha1-RtDMhVOrt7E6NSsNbeov1Y8tm1U=", + "dev": true + } + } + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true + }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=" + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.1" + } + }, + "depd": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", + "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=" + }, + "deprecated-decorator": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz", + "integrity": "sha1-AJZjF7ehL+kvPMgx91g68ym4bDc=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "2.0.1" + }, + "dependencies": { + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + } + } + }, + "diff": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", + "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", + "dev": true + }, + "doctrine": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", + "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + } + }, + "dotenv": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz", + "integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=" + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" + }, + "duplexify": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.0.tgz", + "integrity": "sha1-GqdzAC4VeEV+nZ1KULDMquvL1gQ=", + "requires": { + "end-of-stream": "1.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.0", + "stream-shift": "1.0.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "encodeurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", + "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=" + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "0.4.15" + } + }, + "end-of-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.0.0.tgz", + "integrity": "sha1-1FlucCc0qT5A6a+GQxnqvZn/Lw4=", + "requires": { + "once": "1.3.3" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "requires": { + "is-arrayish": "0.2.1" + } + }, + "es6-promise": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.1.1.tgz", + "integrity": "sha512-OaU1hHjgJf+b0NzsxCg7NdIYERD6Hy/PEmFLTjw+b65scuisG3Kt4QoTvJ66BBkPZ581gr0kpoVzKnxniM8nng==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "eslint": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.3.0.tgz", + "integrity": "sha1-/NfJY3a780yF7mftABKimWQrEI8=", + "requires": { + "ajv": "5.2.2", + "babel-code-frame": "6.22.0", + "chalk": "1.1.3", + "concat-stream": "1.6.0", + "cross-spawn": "5.1.0", + "debug": "2.6.8", + "doctrine": "2.0.0", + "eslint-scope": "3.7.1", + "espree": "3.4.3", + "esquery": "1.0.0", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "functional-red-black-tree": "1.0.1", + "glob": "7.1.2", + "globals": "9.18.0", + "ignore": "3.3.3", + "imurmurhash": "0.1.4", + "inquirer": "3.2.1", + "is-resolvable": "1.0.0", + "js-yaml": "3.9.0", + "json-stable-stringify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "4.0.0", + "progress": "2.0.0", + "require-uncached": "1.0.3", + "semver": "5.3.0", + "strip-json-comments": "2.0.1", + "table": "4.0.1", + "text-table": "0.2.0" + }, + "dependencies": { + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "eslint-config-airbnb-base": { + "version": "11.3.1", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-11.3.1.tgz", + "integrity": "sha512-BXVH7PV5yiLjnkv49iOLJ8dWp+ljZf310ytQpqwrunFADiEbWRyN0tPGDU36FgEbdLvhJDWcJOngYDzPF4shDw==", + "requires": { + "eslint-restricted-globals": "0.1.1" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz", + "integrity": "sha512-yUtXS15gIcij68NmXmP9Ni77AQuCN0itXbCc/jWd8C6/yKZaSNXicpC8cgvjnxVdmfsosIXrjpzFq7GcDryb6A==", + "requires": { + "debug": "2.6.8", + "resolve": "1.3.3" + }, + "dependencies": { + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "eslint-module-utils": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz", + "integrity": "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==", + "requires": { + "debug": "2.6.8", + "pkg-dir": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "eslint-plugin-import": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.7.0.tgz", + "integrity": "sha512-HGYmpU9f/zJaQiKNQOVfHUh2oLWW3STBrCgH0sHTX1xtsxYlH1zjLh8FlQGEIdZSdTbUMaV36WaZ6ImXkenGxQ==", + "requires": { + "builtin-modules": "1.1.1", + "contains-path": "0.1.0", + "debug": "2.6.8", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "0.3.1", + "eslint-module-utils": "2.1.1", + "has": "1.0.1", + "lodash.cond": "4.5.2", + "minimatch": "3.0.4", + "read-pkg-up": "2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + } + } + } + }, + "eslint-restricted-globals": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz", + "integrity": "sha1-NfDVy8ZMLj7WLpO0saevBbp+1Nc=" + }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "requires": { + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, + "espree": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.4.3.tgz", + "integrity": "sha1-KRC1zNSc6JPC//+qtP2LOjG4I3Q=", + "requires": { + "acorn": "5.1.1", + "acorn-jsx": "3.0.1" + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==" + }, + "esquery": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", + "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "requires": { + "estraverse": "4.2.0" + } + }, + "esrecurse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", + "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "requires": { + "estraverse": "4.2.0", + "object-assign": "4.1.1" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + }, + "etag": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz", + "integrity": "sha1-b2Ma7zNtbEY2K1F2QETOIWvjwFE=" + }, + "event-stream": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", + "requires": { + "duplexer": "0.1.1", + "from": "0.1.7", + "map-stream": "0.1.0", + "pause-stream": "0.0.11", + "split": "0.3.3", + "stream-combiner": "0.0.4", + "through": "2.3.8" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "requires": { + "fill-range": "2.2.3" + } + }, + "express": { + "version": "4.15.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.15.3.tgz", + "integrity": "sha1-urZdDwOqgMNYQIly/HAPkWlEtmI=", + "requires": { + "accepts": "1.3.3", + "array-flatten": "1.1.1", + "content-disposition": "0.5.2", + "content-type": "1.0.2", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.7", + "depd": "1.1.0", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.0", + "finalhandler": "1.0.3", + "fresh": "0.5.0", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.1", + "path-to-regexp": "0.1.7", + "proxy-addr": "1.1.4", + "qs": "6.4.0", + "range-parser": "1.2.0", + "send": "0.15.3", + "serve-static": "1.12.3", + "setprototypeof": "1.0.3", + "statuses": "1.3.1", + "type-is": "1.6.15", + "utils-merge": "1.0.0", + "vary": "1.1.1" + } + }, + "express-graphql": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/express-graphql/-/express-graphql-0.6.7.tgz", + "integrity": "sha512-VXcbGTbHcmLKwrSnCbaa6rahDUV1vMsj5BwCi1IDDDKsg6LMyAldb5UkJAfioAzogbZTDGOCFqm9KwhpQ9Up1A==", + "requires": { + "accepts": "1.3.3", + "content-type": "1.0.2", + "http-errors": "1.6.1", + "raw-body": "2.2.0" + } + }, + "external-editor": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.4.tgz", + "integrity": "sha1-HtkZnanL/i7y96MbL96LDRI2iXI=", + "requires": { + "iconv-lite": "0.4.18", + "jschardet": "1.5.0", + "tmp": "0.0.31" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz", + "integrity": "sha512-sr1ZQph3UwHTR0XftSbK85OvBbxe/abLGzEnPENCQwmHf7sck8Oyu4ob3LgBxWWxRoM+QszeUyl7jbqapu2TqA==" + } + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "requires": { + "is-extglob": "1.0.0" + } + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "requires": { + "flat-cache": "1.2.2", + "object-assign": "4.1.1" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "finalhandler": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.3.tgz", + "integrity": "sha1-70fneVDpmXgOhgIqVg4yF+DQzIk=", + "requires": { + "debug": "2.6.7", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.1", + "statuses": "1.3.1", + "unpipe": "1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "flat-cache": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", + "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=", + "requires": { + "circular-json": "0.3.3", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "requires": { + "for-in": "1.0.2" + } + }, + "formatio": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.2.0.tgz", + "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=", + "dev": true, + "requires": { + "samsam": "1.2.1" + } + }, + "forwarded": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", + "integrity": "sha1-Ge+YdMSuHCl7zweP3mOgm2aoQ2M=" + }, + "fresh": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", + "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=" + }, + "from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", + "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", + "optional": true, + "requires": { + "nan": "2.6.2", + "node-pre-gyp": "0.6.36" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", + "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=", + "optional": true + }, + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "aproba": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.1.tgz", + "integrity": "sha1-ldNgDwdxCqDpKYxyatXs8urLq6s=", + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "optional": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", + "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=", + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "optional": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "optional": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "optional": true + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", + "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "har-schema": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "optional": true + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "optional": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "optional": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", + "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", + "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", + "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=" + }, + "mime-types": { + "version": "2.1.15", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", + "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.36", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz", + "integrity": "sha1-22BBEst04NR3VU6bUFsXq936t4Y=", + "optional": true, + "requires": { + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz", + "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==", + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "optional": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "optional": true + }, + "osenv": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", + "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "performance-now": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "optional": true + }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "optional": true + }, + "rc": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", + "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", + "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", + "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=" + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "optional": true + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "optional": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz", + "integrity": "sha1-/yo+T9BEl1Vf7Zezmg/YL6+zozw=", + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true + } + } + }, + "string_decoder": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", + "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=", + "requires": { + "safe-buffer": "5.0.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "optional": true + }, + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.0.tgz", + "integrity": "sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ=", + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", + "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "uuid": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", + "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=", + "optional": true + }, + "verror": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", + "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + } + } + }, + "function-bind": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz", + "integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E=" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.3.3", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "requires": { + "is-glob": "2.0.1" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "got": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/got/-/got-3.3.1.tgz", + "integrity": "sha1-5dDtSvVfw+701WAHdp2YGSvLLso=", + "requires": { + "duplexify": "3.5.0", + "infinity-agent": "2.0.3", + "is-redirect": "1.0.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.0", + "nested-error-stacks": "1.0.2", + "object-assign": "3.0.0", + "prepend-http": "1.0.4", + "read-all-stream": "3.1.0", + "timed-out": "2.0.0" + }, + "dependencies": { + "object-assign": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=" + } + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", + "dev": true + }, + "graphql": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-0.10.5.tgz", + "integrity": "sha512-Q7cx22DiLhwHsEfUnUip1Ww/Vfx7FS0w6+iHItNuN61+XpegHSa3k5U0+6M5BcpavQImBwFiy0z3uYwY7cXMLQ==", + "requires": { + "iterall": "1.1.1" + } + }, + "graphql-tools": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-1.1.0.tgz", + "integrity": "sha1-jYbqaZew3qMIm2LcZV5HFGpmPrs=", + "requires": { + "@types/graphql": "0.9.4", + "deprecated-decorator": "0.1.6", + "lodash": "4.17.4", + "uuid": "3.1.0" + }, + "dependencies": { + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==" + } + } + }, + "growl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", + "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", + "dev": true + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "requires": { + "function-bind": "1.1.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==" + }, + "http-errors": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz", + "integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc=", + "requires": { + "depd": "1.1.0", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": "1.3.1" + } + }, + "iconv-lite": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz", + "integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es=" + }, + "ignore": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.3.tgz", + "integrity": "sha1-QyNS5XrM2HqzEQ6C0/6g5HgSFW0=" + }, + "ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=" + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "infinity-agent": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/infinity-agent/-/infinity-agent-2.0.3.tgz", + "integrity": "sha1-ReDi/3qesDCyfWK3SzdEt6esQhY=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.3.3", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=" + }, + "inquirer": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.2.1.tgz", + "integrity": "sha512-QgW3eiPN8gpj/K5vVpHADJJgrrF0ho/dZGylikGX7iqAdRgC9FVKYKWFLx6hZDBFcOLEoSqINYrVPeFAeG/PdA==", + "requires": { + "ansi-escapes": "2.0.0", + "chalk": "2.0.1", + "cli-cursor": "2.1.0", + "cli-width": "2.1.0", + "external-editor": "2.0.4", + "figures": "2.0.0", + "lodash": "4.17.4", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "requires": { + "color-convert": "1.9.0" + } + }, + "chalk": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", + "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.2.1" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "3.0.0" + } + }, + "supports-color": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz", + "integrity": "sha512-qxzYsob3yv6U+xMzPrv170y8AwGP7i74g+pbixCfD6rgso8BscLT2qXIuz6TpOaiJZ3mFgT5O9lyT9nMU4LfaA==", + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "ipaddr.js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.3.0.tgz", + "integrity": "sha1-HgOlL9rYOou7KyXL9JmLTP/NPew=" + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "requires": { + "binary-extensions": "1.8.0" + } + }, + "is-buffer": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", + "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=" + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=" + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "requires": { + "kind-of": "3.2.2" + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=" + }, + "is-path-in-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "requires": { + "is-path-inside": "1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", + "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" + }, + "is-resolvable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", + "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", + "requires": { + "tryit": "1.0.3" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "requires": { + "node-fetch": "1.7.1", + "whatwg-fetch": "2.0.3" + } + }, + "iterall": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.1.1.tgz", + "integrity": "sha1-9/CvEemgTsZCYmD1AZ2fzKTVAhQ=" + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + }, + "js-yaml": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.9.0.tgz", + "integrity": "sha512-0LoUNELX4S+iofCT8f4uEHIiRBR+c2AINyC8qRWfC6QNruLtxVZRJaPcu/xwMgFIgDxF25tGHaDjvxzJCNE9yw==", + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } + }, + "jschardet": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.5.0.tgz", + "integrity": "sha512-+Q8JsoEQbrdE+a/gg1F9XO92gcKXgpE5UACqr0sIubjDmBEkd+OOWPGzQeMrWSLxd73r4dHxBeRW7edHu5LmJQ==" + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.5" + } + }, + "latest-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-1.0.1.tgz", + "integrity": "sha1-cs/Ebj6NG+ZR4eu1Tqn26pbzdLs=", + "requires": { + "package-json": "1.2.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + } + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + }, + "lodash._baseassign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", + "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "requires": { + "lodash._basecopy": "3.0.1", + "lodash.keys": "3.1.2" + } + }, + "lodash._basecopy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", + "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=" + }, + "lodash._basecreate": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", + "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", + "dev": true + }, + "lodash._bindcallback": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", + "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=" + }, + "lodash._createassigner": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz", + "integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=", + "requires": { + "lodash._bindcallback": "3.0.1", + "lodash._isiterateecall": "3.0.9", + "lodash.restparam": "3.6.1" + } + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", + "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=" + }, + "lodash.assign": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz", + "integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=", + "requires": { + "lodash._baseassign": "3.2.0", + "lodash._createassigner": "3.1.1", + "lodash.keys": "3.1.2" + } + }, + "lodash.cond": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", + "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=" + }, + "lodash.create": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", + "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", + "dev": true, + "requires": { + "lodash._baseassign": "3.2.0", + "lodash._basecreate": "3.0.3", + "lodash._isiterateecall": "3.0.9" + } + }, + "lodash.defaults": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-3.1.2.tgz", + "integrity": "sha1-xzCLGNv4vJNy1wGnNJPGEZK9Liw=", + "requires": { + "lodash.assign": "3.2.0", + "lodash.restparam": "3.6.1" + } + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "requires": { + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" + } + }, + "lodash.restparam": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", + "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=" + }, + "lolex": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.6.0.tgz", + "integrity": "sha1-OpoCg0UqR9dDnnJzG54H1zhuSfY=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=" + }, + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "map-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.3" + } + }, + "mime": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=" + }, + "mime-db": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", + "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=" + }, + "mime-types": { + "version": "2.1.15", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", + "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", + "requires": { + "mime-db": "1.27.0" + } + }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "mocha": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.0.tgz", + "integrity": "sha512-pIU2PJjrPYvYRqVpjXzj76qltO9uBYI7woYAMoxbSefsa+vqAfptjoeevd6bUgwD0mPIO+hv9f7ltvsNreL2PA==", + "dev": true, + "requires": { + "browser-stdout": "1.3.0", + "commander": "2.9.0", + "debug": "2.6.8", + "diff": "3.2.0", + "escape-string-regexp": "1.0.5", + "glob": "7.1.1", + "growl": "1.9.2", + "json3": "3.3.2", + "lodash.create": "3.1.1", + "mkdirp": "0.5.1", + "supports-color": "3.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", + "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.3.3", + "path-is-absolute": "1.0.1" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "supports-color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", + "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" + }, + "nan": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", + "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", + "optional": true + }, + "native-promise-only": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", + "integrity": "sha1-IKMYwwy0X3H+et+/eyHJnBRy7xE=", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" + }, + "nested-error-stacks": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-1.0.2.tgz", + "integrity": "sha1-GfYZWRUZ8JZ2mlupqG5u7sgjw88=", + "requires": { + "inherits": "2.0.3" + } + }, + "nock": { + "version": "9.0.14", + "resolved": "https://registry.npmjs.org/nock/-/nock-9.0.14.tgz", + "integrity": "sha1-IhFVAlMXPOKYvNifyoJeg4E8pys=", + "dev": true, + "requires": { + "chai": "3.5.0", + "debug": "2.6.7", + "deep-equal": "1.0.1", + "json-stringify-safe": "5.0.1", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "propagate": "0.4.0", + "qs": "6.4.0", + "semver": "5.3.0" + }, + "dependencies": { + "chai": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", + "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", + "dev": true, + "requires": { + "assertion-error": "1.0.2", + "deep-eql": "0.1.3", + "type-detect": "1.0.0" + } + }, + "deep-eql": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", + "dev": true, + "requires": { + "type-detect": "0.1.1" + }, + "dependencies": { + "type-detect": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", + "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", + "dev": true + } + } + }, + "type-detect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", + "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=", + "dev": true + } + } + }, + "node-fetch": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.1.tgz", + "integrity": "sha512-j8XsFGCLw79vWXkZtMSmmLaOk9z5SQ9bV/tkbZVCqvgwzrjAGq66igobLofHtF63NvMTp2WjytpsNTGKa+XRIQ==", + "requires": { + "encoding": "0.1.12", + "is-stream": "1.1.0" + } + }, + "nodemon": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.11.0.tgz", + "integrity": "sha1-ImxWK9KnsT09dRi0mtSCijYj0Gw=", + "requires": { + "chokidar": "1.7.0", + "debug": "2.6.7", + "es6-promise": "3.3.1", + "ignore-by-default": "1.0.1", + "lodash.defaults": "3.1.2", + "minimatch": "3.0.4", + "ps-tree": "1.1.0", + "touch": "1.0.0", + "undefsafe": "0.0.3", + "update-notifier": "0.5.0" + }, + "dependencies": { + "es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" + } + } + }, + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "requires": { + "abbrev": "1.1.0" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.3.0", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "requires": { + "remove-trailing-separator": "1.0.2" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", + "requires": { + "wrappy": "1.0.2" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "requires": { + "mimic-fn": "1.1.0" + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + }, + "osenv": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", + "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=" + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "requires": { + "p-limit": "1.1.0" + } + }, + "package-json": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-1.2.0.tgz", + "integrity": "sha1-yOysCUInzfdqMWh07QXifMk5oOA=", + "requires": { + "got": "3.3.1", + "registry-url": "3.1.0" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "1.3.1" + } + }, + "parseurl": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", + "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=" + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "requires": { + "pify": "2.3.0" + } + }, + "pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "dev": true + }, + "pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", + "requires": { + "through": "2.3.8" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "2.0.4" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "requires": { + "find-up": "1.1.2" + } + }, + "pluralize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-4.0.0.tgz", + "integrity": "sha1-WbcIwcAZCi9pLxx2GMRGsFL9F2I=" + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" + }, + "private": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", + "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "progress": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=" + }, + "propagate": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-0.4.0.tgz", + "integrity": "sha1-8/zKCm/gZzanulcpZgaWF8EwtIE=", + "dev": true + }, + "proxy-addr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.4.tgz", + "integrity": "sha1-J+VF9pYKRKYn2bREZ+NcG2tM4vM=", + "requires": { + "forwarded": "0.1.0", + "ipaddr.js": "1.3.0" + } + }, + "ps-tree": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.1.0.tgz", + "integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=", + "requires": { + "event-stream": "3.3.4" + } + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=" + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" + }, + "raw-body": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.2.0.tgz", + "integrity": "sha1-mUl2z2pQlqQRYoQEkvC9xdbn+5Y=", + "requires": { + "bytes": "2.4.0", + "iconv-lite": "0.4.15", + "unpipe": "1.0.0" + } + }, + "rc": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", + "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } + } + }, + "read-all-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", + "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", + "requires": { + "pinkie-promise": "2.0.1", + "readable-stream": "2.3.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "requires": { + "locate-path": "2.0.0" + } + } + } + }, + "readable-stream": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.0.tgz", + "integrity": "sha512-c7KMXGd4b48nN3OJ1U9qOsn6pXNzf6kLd3kdZCkg2sxAcoiufInqF0XckwEnlrcwuaYwonlNK8GQUIOC/WC7sg==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.0", + "string_decoder": "1.0.2", + "util-deprecate": "1.0.2" + } + }, + "readdirp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "requires": { + "graceful-fs": "4.1.11", + "minimatch": "3.0.4", + "readable-stream": "2.3.0", + "set-immediate-shim": "1.0.1" + } + }, + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "dev": true + }, + "regex-cache": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", + "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", + "requires": { + "is-equal-shallow": "0.1.3", + "is-primitive": "2.0.0" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "requires": { + "rc": "1.2.1" + } + }, + "remove-trailing-separator": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", + "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=" + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + }, + "repeating": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", + "integrity": "sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw=", + "requires": { + "is-finite": "1.0.2" + } + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "requires": { + "caller-path": "0.1.0", + "resolve-from": "1.0.1" + } + }, + "resolve": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", + "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", + "requires": { + "path-parse": "1.0.5" + } + }, + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=" + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "requires": { + "onetime": "2.0.1", + "signal-exit": "3.0.2" + } + }, + "rimraf": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "requires": { + "glob": "7.1.2" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "requires": { + "is-promise": "2.1.0" + } + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=" + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "requires": { + "rx-lite": "4.0.8" + } + }, + "safe-buffer": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.0.tgz", + "integrity": "sha512-aSLEDudu6OoRr/2rU609gRmnYboRLxgDG1z9o2Q0os7236FwvcqIOO8r8U5JUEwivZOhDaKlFO4SbPTJYyBEyQ==" + }, + "samsam": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.2.1.tgz", + "integrity": "sha1-7dOQk6MYQ3DLhZJDsr3yVefY6mc=", + "dev": true + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" + }, + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "requires": { + "semver": "5.3.0" + } + }, + "send": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/send/-/send-0.15.3.tgz", + "integrity": "sha1-UBP5+ZAj31DRvZiSwZ4979HVMwk=", + "requires": { + "debug": "2.6.7", + "depd": "1.1.0", + "destroy": "1.0.4", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.0", + "fresh": "0.5.0", + "http-errors": "1.6.1", + "mime": "1.3.4", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.3.1" + } + }, + "serve-static": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.3.tgz", + "integrity": "sha1-n0uhni8wMMVH+K+ZEHg47DjVseI=", + "requires": { + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "parseurl": "1.3.1", + "send": "0.15.3" + } + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "sinon": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-2.4.1.tgz", + "integrity": "sha512-vFTrO9Wt0ECffDYIPSP/E5bBugt0UjcBQOfQUMh66xzkyPEnhl/vM2LRZi2ajuTdkH07sA6DzrM6KvdvGIH8xw==", + "dev": true, + "requires": { + "diff": "3.2.0", + "formatio": "1.2.0", + "lolex": "1.6.0", + "native-promise-only": "0.8.1", + "path-to-regexp": "1.7.0", + "samsam": "1.2.1", + "text-encoding": "0.6.4", + "type-detect": "4.0.3" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "path-to-regexp": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "dev": true, + "requires": { + "isarray": "0.0.1" + } + } + } + }, + "sinon-chai": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-2.12.0.tgz", + "integrity": "sha512-/J38xAWY5ppvRKuSrdnpVv7rWmxjfma9lL/iYaqn+ge/JynkhM9w8PaFAoGvGv+Tj2nEQWkkS8S4Syt4Lw1K6Q==", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=" + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=" + }, + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "dev": true + }, + "source-map-support": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", + "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", + "dev": true, + "requires": { + "source-map": "0.5.6" + } + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" + }, + "split": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", + "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", + "requires": { + "through": "2.3.8" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + }, + "stream-combiner": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", + "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", + "requires": { + "duplexer": "0.1.1" + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" + }, + "string_decoder": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.2.tgz", + "integrity": "sha1-sp4fThEl+pehA4K4pTNze3SR4Xk=", + "requires": { + "safe-buffer": "5.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", + "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=" + } + } + }, + "string-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", + "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=", + "requires": { + "strip-ansi": "3.0.1" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "table": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.1.tgz", + "integrity": "sha1-qBFsEz+sLGH0pCCrbN9cTWHw5DU=", + "requires": { + "ajv": "4.11.8", + "ajv-keywords": "1.5.1", + "chalk": "1.1.3", + "lodash": "4.17.4", + "slice-ansi": "0.0.4", + "string-width": "2.1.1" + }, + "dependencies": { + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + } + } + }, + "text-encoding": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", + "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=", + "dev": true + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "timed-out": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-2.0.0.tgz", + "integrity": "sha1-84sK6B03R9YoAB9B2vxlKs5nHAo=" + }, + "tmp": { + "version": "0.0.31", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", + "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", + "requires": { + "os-tmpdir": "1.0.2" + } + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "touch": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-1.0.0.tgz", + "integrity": "sha1-RJy+LbrlqMgDjjDXH6D/RklHxN4=", + "requires": { + "nopt": "1.0.10" + } + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "tryit": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", + "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "1.1.2" + } + }, + "type-detect": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.3.tgz", + "integrity": "sha1-Dj8mcLRAmbC0bChNE2p+9Jx0wuo=", + "dev": true + }, + "type-is": { + "version": "1.6.15", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", + "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", + "requires": { + "media-typer": "0.3.0", + "mime-types": "2.1.15" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "undefsafe": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-0.0.3.tgz", + "integrity": "sha1-7Mo6A+VrmvFzhbqsgSrIO5lKli8=" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "update-notifier": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-0.5.0.tgz", + "integrity": "sha1-B7XcIGazYnqztPUwEw9+3doHpMw=", + "requires": { + "chalk": "1.1.3", + "configstore": "1.4.0", + "is-npm": "1.0.0", + "latest-version": "1.0.1", + "repeating": "1.1.3", + "semver-diff": "2.1.0", + "string-length": "1.0.1" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "utils-merge": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", + "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=" + }, + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=" + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "vary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.1.tgz", + "integrity": "sha1-Z1Neu2lMHVIldFeYRmUyP1h+jTc=" + }, + "whatwg-fetch": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", + "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=" + }, + "which": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", + "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", + "requires": { + "isexe": "2.0.0" + } + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "requires": { + "mkdirp": "0.5.1" + } + }, + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } + }, + "xdg-basedir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz", + "integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=", + "requires": { + "os-homedir": "1.0.2" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + } + } +} diff --git a/package.json b/package.json index 3e6dde2..307759a 100644 --- a/package.json +++ b/package.json @@ -1,40 +1,43 @@ { - "name": "", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "test": "scripts/test", - "dev": "scripts/dev", - "up": "scripts/up", - "down": "scripts/down", - "lint": "scripts/lint" - }, - "author": "", - "license": "MIT", - "dependencies": { - "body-parser": "1.17.2", - "dotenv": "4.0.0", - "es6-promise": "4.1.1", - "eslint": "4.3.0", - "eslint-config-airbnb-base": "11.3.1", - "eslint-plugin-import": "2.7.0", - "express": "4.15.3", - "express-graphql": "0.6.7", - "graphql": "0.10.5", - "graphql-tools": "1.1.0", - "isomorphic-fetch": "2.2.1", - "nock": "9.0.14", - "node-fetch": "1.7.1", - "nodemon": "1.11.0", - "whatwg-fetch": "2.0.3" - }, - "devDependencies": { - "babel-register": "6.24.1", - "chai": "4.1.0", - "mocha": "3.4.2", - "nock": "9.0.14", - "sinon": "2.4.1", - "sinon-chai": "2.12.0" - } + "name": "", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "scripts/test", + "production-test": "scripts/production-test", + "dev": "scripts/dev", + "up": "scripts/up", + "down": "scripts/down", + "lint": "scripts/lint", + "production-lint": "scripts/production-lint", + "start": "node index.js" + }, + "author": "", + "license": "MIT", + "dependencies": { + "body-parser": "1.17.2", + "dotenv": "4.0.0", + "es6-promise": "4.1.1", + "eslint": "4.3.0", + "eslint-config-airbnb-base": "11.3.1", + "eslint-plugin-import": "2.7.0", + "express": "4.15.3", + "express-graphql": "0.6.7", + "graphql": "0.10.5", + "graphql-tools": "1.1.0", + "isomorphic-fetch": "2.2.1", + "nock": "9.0.14", + "node-fetch": "1.7.1", + "nodemon": "1.11.0", + "whatwg-fetch": "2.0.3" + }, + "devDependencies": { + "babel-register": "6.24.1", + "chai": "4.1.0", + "mocha": "3.4.2", + "nock": "9.0.14", + "sinon": "2.4.1", + "sinon-chai": "2.12.0" + } } diff --git a/scripts/production-lint b/scripts/production-lint new file mode 100755 index 0000000..1aefe49 --- /dev/null +++ b/scripts/production-lint @@ -0,0 +1,6 @@ +#! /usr/bin/env sh + +# This script is run as the default command INSIDE the container +# and therfore does not need to issue commands via `docker-compose` + +./node_modules/eslint/bin/eslint.js . diff --git a/scripts/production-test b/scripts/production-test new file mode 100755 index 0000000..fa1c0e4 --- /dev/null +++ b/scripts/production-test @@ -0,0 +1,6 @@ +#! /usr/bin/env sh + +# This script is run as the default command INSIDE the container +# and therfore does not need to issue commands via `docker-compose` + +./node_modules/mocha/bin/mocha test diff --git a/src/models/Issue.js b/src/models/Issue.js index 34b3dcf..354f078 100644 --- a/src/models/Issue.js +++ b/src/models/Issue.js @@ -1,4 +1,5 @@ /* eslint-disable no-param-reassign */ + const Label = require('./Label'); function getAssignee(assignee) { diff --git a/tasks/github-api.json b/tasks/github-api.json new file mode 100644 index 0000000..e4a420f --- /dev/null +++ b/tasks/github-api.json @@ -0,0 +1,21 @@ +{ + "taskRoleArn": "arn:aws:iam::116138389191:role/github-api-task-role", + "containerDefinitions": [ + { + "memory": 512, + "portMappings": [ + { + "hostPort": 0, + "containerPort": 8000, + "protocol": "tcp" + } + ], + "essential": true, + "name": "github-api", + "image": "databraiddb/github-api:latest", + "cpu": 10, + "command": ["npm", "start"] + } + ], + "family": "github-api" +} diff --git a/test/RootResolver.test.js b/test/RootResolver.test.js new file mode 100644 index 0000000..bacb1d8 --- /dev/null +++ b/test/RootResolver.test.js @@ -0,0 +1,346 @@ +/* eslint-disable no-undef, no-unused-expressions */ +const { expect } = require('chai'); +require('chai').use(require('sinon-chai')); +const sinon = require('sinon'); +const root = require('../src/resolvers/RootResolver'); +const User = require('../src/models/User'); + +describe('RootResolver model', () => { + xit('should be a function', () => { + expect(root.gitData).to.be.a('function'); + }); + + it('should return a new User model', () => { + const user = new User({ name: 'michaelmurray6298' }); + sinon.stub(user, 'orgs').get(() => ({ + org: { + login: 'gSchool', + id: 3484345, + url: 'https://api.github.com/orgs/gSchool', + repos_url: 'https://api.github.com/orgs/gSchool/repos', + events_url: 'https://api.github.com/orgs/gSchool/events', + hooks_url: 'https://api.github.com/orgs/gSchool/hooks', + issues_url: 'https://api.github.com/orgs/gSchool/issues', + members_url: 'https://api.github.com/orgs/gSchool/members{/member}', + public_members_url: + 'https://api.github.com/orgs/gSchool/public_members{/member}', + avatar_url: 'https://avatars1.githubusercontent.com/u/3484345?v=4', + description: 'Home of all the Galvanize education repositories', + }, + login: 'gSchool', + id: 3484345, + url: 'https://api.github.com/orgs/gSchool', + userRepos: [Function], + })); + sinon.stub(user, 'userRepos').get(() => ({ + repo: { + id: 98671137, + name: 'databraid-api-starter', + full_name: 'michaelmurray6298/databraid-api-starter', + owner: { + login: 'michaelmurray6298', + id: 24865792, + avatar_url: 'https://avatars1.githubusercontent.com/u/24865792?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/michaelmurray6298', + html_url: 'https://github.com/michaelmurray6298', + followers_url: + 'https://api.github.com/users/michaelmurray6298/followers', + following_url: + 'https://api.github.com/users/michaelmurray6298/following{/other_user}', + gists_url: + 'https://api.github.com/users/michaelmurray6298/gists{/gist_id}', + starred_url: + 'https://api.github.com/users/michaelmurray6298/starred{/owner}{/repo}', + subscriptions_url: + 'https://api.github.com/users/michaelmurray6298/subscriptions', + organizations_url: + 'https://api.github.com/users/michaelmurray6298/orgs', + repos_url: 'https://api.github.com/users/michaelmurray6298/repos', + events_url: + 'https://api.github.com/users/michaelmurray6298/events{/privacy}', + received_events_url: + 'https://api.github.com/users/michaelmurray6298/received_events', + type: 'User', + site_admin: false, + }, + private: false, + html_url: 'https://github.com/michaelmurray6298/databraid-api-starter', + description: null, + fork: true, + url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter', + forks_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/forks', + keys_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/keys{/key_id}', + collaborators_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/collaborators{/collaborator}', + teams_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/teams', + hooks_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/hooks', + issue_events_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/issues/events{/number}', + events_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/events', + assignees_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/assignees{/user}', + branches_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/branches{/branch}', + tags_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/tags', + blobs_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/git/blobs{/sha}', + git_tags_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/git/tags{/sha}', + git_refs_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/git/refs{/sha}', + trees_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/git/trees{/sha}', + statuses_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/statuses/{sha}', + languages_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/languages', + stargazers_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/stargazers', + contributors_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/contributors', + subscribers_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/subscribers', + subscription_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/subscription', + commits_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/commits{/sha}', + git_commits_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/git/commits{/sha}', + comments_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/comments{/number}', + issue_comment_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/issues/comments{/number}', + contents_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/contents/{+path}', + compare_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/compare/{base}...{head}', + merges_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/merges', + archive_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/{archive_format}{/ref}', + downloads_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/downloads', + issues_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/issues{/number}', + pulls_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/pulls{/number}', + milestones_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/milestones{/number}', + notifications_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/notifications{?since,all,participating}', + labels_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/labels{/name}', + releases_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/releases{/id}', + deployments_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/deployments', + created_at: '2017-07-28T17:13:20Z', + updated_at: '2017-07-28T17:13:21Z', + pushed_at: '2017-07-27T20:16:40Z', + git_url: 'git://github.com/michaelmurray6298/databraid-api-starter.git', + ssh_url: 'git@github.com:michaelmurray6298/databraid-api-starter.git', + clone_url: + 'https://github.com/michaelmurray6298/databraid-api-starter.git', + svn_url: 'https://github.com/michaelmurray6298/databraid-api-starter', + homepage: null, + size: 33, + stargazers_count: 0, + watchers_count: 0, + language: 'JavaScript', + has_issues: false, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + forks_count: 0, + mirror_url: null, + open_issues_count: 0, + forks: 0, + open_issues: 0, + watchers: 0, + default_branch: 'master', + permissions: { admin: true, push: true, pull: true }, + }, + name: 'databraid-api-starter', + id: 98671137, + openIssues: 0, + issue: [Function], + pullRequest: [Function], + milestone: [Function], + })); + + expect(user.orgs).to.deep.equal({ + org: { + login: 'gSchool', + id: 3484345, + url: 'https://api.github.com/orgs/gSchool', + repos_url: 'https://api.github.com/orgs/gSchool/repos', + events_url: 'https://api.github.com/orgs/gSchool/events', + hooks_url: 'https://api.github.com/orgs/gSchool/hooks', + issues_url: 'https://api.github.com/orgs/gSchool/issues', + members_url: 'https://api.github.com/orgs/gSchool/members{/member}', + public_members_url: + 'https://api.github.com/orgs/gSchool/public_members{/member}', + avatar_url: 'https://avatars1.githubusercontent.com/u/3484345?v=4', + description: 'Home of all the Galvanize education repositories', + }, + login: 'gSchool', + id: 3484345, + url: 'https://api.github.com/orgs/gSchool', + userRepos: [Function], + }); + + expect(user.userRepos).to.deep.equal({ + repo: { + id: 98671137, + name: 'databraid-api-starter', + full_name: 'michaelmurray6298/databraid-api-starter', + owner: { + login: 'michaelmurray6298', + id: 24865792, + avatar_url: 'https://avatars1.githubusercontent.com/u/24865792?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/michaelmurray6298', + html_url: 'https://github.com/michaelmurray6298', + followers_url: + 'https://api.github.com/users/michaelmurray6298/followers', + following_url: + 'https://api.github.com/users/michaelmurray6298/following{/other_user}', + gists_url: + 'https://api.github.com/users/michaelmurray6298/gists{/gist_id}', + starred_url: + 'https://api.github.com/users/michaelmurray6298/starred{/owner}{/repo}', + subscriptions_url: + 'https://api.github.com/users/michaelmurray6298/subscriptions', + organizations_url: + 'https://api.github.com/users/michaelmurray6298/orgs', + repos_url: 'https://api.github.com/users/michaelmurray6298/repos', + events_url: + 'https://api.github.com/users/michaelmurray6298/events{/privacy}', + received_events_url: + 'https://api.github.com/users/michaelmurray6298/received_events', + type: 'User', + site_admin: false, + }, + private: false, + html_url: 'https://github.com/michaelmurray6298/databraid-api-starter', + description: null, + fork: true, + url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter', + forks_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/forks', + keys_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/keys{/key_id}', + collaborators_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/collaborators{/collaborator}', + teams_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/teams', + hooks_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/hooks', + issue_events_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/issues/events{/number}', + events_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/events', + assignees_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/assignees{/user}', + branches_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/branches{/branch}', + tags_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/tags', + blobs_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/git/blobs{/sha}', + git_tags_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/git/tags{/sha}', + git_refs_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/git/refs{/sha}', + trees_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/git/trees{/sha}', + statuses_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/statuses/{sha}', + languages_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/languages', + stargazers_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/stargazers', + contributors_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/contributors', + subscribers_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/subscribers', + subscription_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/subscription', + commits_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/commits{/sha}', + git_commits_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/git/commits{/sha}', + comments_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/comments{/number}', + issue_comment_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/issues/comments{/number}', + contents_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/contents/{+path}', + compare_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/compare/{base}...{head}', + merges_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/merges', + archive_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/{archive_format}{/ref}', + downloads_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/downloads', + issues_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/issues{/number}', + pulls_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/pulls{/number}', + milestones_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/milestones{/number}', + notifications_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/notifications{?since,all,participating}', + labels_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/labels{/name}', + releases_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/releases{/id}', + deployments_url: + 'https://api.github.com/repos/michaelmurray6298/databraid-api-starter/deployments', + created_at: '2017-07-28T17:13:20Z', + updated_at: '2017-07-28T17:13:21Z', + pushed_at: '2017-07-27T20:16:40Z', + git_url: 'git://github.com/michaelmurray6298/databraid-api-starter.git', + ssh_url: 'git@github.com:michaelmurray6298/databraid-api-starter.git', + clone_url: + 'https://github.com/michaelmurray6298/databraid-api-starter.git', + svn_url: 'https://github.com/michaelmurray6298/databraid-api-starter', + homepage: null, + size: 33, + stargazers_count: 0, + watchers_count: 0, + language: 'JavaScript', + has_issues: false, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + forks_count: 0, + mirror_url: null, + open_issues_count: 0, + forks: 0, + open_issues: 0, + watchers: 0, + default_branch: 'master', + permissions: { admin: true, push: true, pull: true }, + }, + name: 'databraid-api-starter', + id: 98671137, + openIssues: 0, + issue: [Function], + pullRequest: [Function], + milestone: [Function], + }); + }); +}); From e1797f104ec245c5a557438d34f65f530e1599c8 Mon Sep 17 00:00:00 2001 From: Josh Wyatt Date: Fri, 11 Aug 2017 14:55:34 -0700 Subject: [PATCH 04/23] Add npm install to Dockerfile instructions --- Dockerfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Dockerfile b/Dockerfile index 8a2e3c1..a1715ec 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,6 +3,9 @@ FROM node:8.1.2-alpine RUN mkdir app WORKDIR app +ADD package.json . +RUN npm i + ADD . . EXPOSE 8000 From 04896b99f203dc1bea5c4ebac4cca79a7233698b Mon Sep 17 00:00:00 2001 From: Josh Wyatt Date: Fri, 11 Aug 2017 15:00:51 -0700 Subject: [PATCH 05/23] Add image name to build service as --- codeship-services.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/codeship-services.yml b/codeship-services.yml index 76ed3cd..e1da07d 100644 --- a/codeship-services.yml +++ b/codeship-services.yml @@ -6,4 +6,5 @@ awsdeployment: github-api: build: + image: databraiddb/github-api dockerfile: Dockerfile From e3e95063a9f8b0f2739bfe8e88331fa1bfa215a5 Mon Sep 17 00:00:00 2001 From: joshwyatt Date: Tue, 15 Aug 2017 10:19:44 -0700 Subject: [PATCH 06/23] Add health check route handler --- index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/index.js b/index.js index 6367423..17daa9c 100644 --- a/index.js +++ b/index.js @@ -10,6 +10,9 @@ const PORT = process.env.PORT || 8000; app.use(bodyParser.json()); +app.use('/', (req, res) => { + res.sendStatus(200); +}); app.use( '/graphql', From 1d0c63e06b312ea018760d5bbbd6e187334f3761 Mon Sep 17 00:00:00 2001 From: joshwyatt Date: Tue, 15 Aug 2017 10:26:49 -0700 Subject: [PATCH 07/23] Reserve deployment steps for master branch commits only --- codeship-steps.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/codeship-steps.yml b/codeship-steps.yml index 54e2622..5deb2e2 100644 --- a/codeship-steps.yml +++ b/codeship-steps.yml @@ -3,10 +3,13 @@ - service: github-api command: npm run production-test - service: github-api + tag: "master" type: push image_name: databraiddb/github-api encrypted_dockercfg_path: dockercfg.encrypted - service: awsdeployment + tag: "master" command: aws ecs register-task-definition --cli-input-json file:///deploy/tasks/github-api.json - service: awsdeployment + tag: "master" command: aws ecs update-service --cluster databraid-cluster --service github-api-service --task-definition github-api From fccebb73524ae941c9ba00ea879666a0baef58dd Mon Sep 17 00:00:00 2001 From: joshwyatt Date: Mon, 21 Aug 2017 14:55:46 -0700 Subject: [PATCH 08/23] Add cors handler and move health check middleware --- index.js | 13 ++++++++----- package.json | 1 + 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/index.js b/index.js index 17daa9c..7c1341f 100644 --- a/index.js +++ b/index.js @@ -1,18 +1,15 @@ const express = require('express'); const bodyParser = require('body-parser'); const graphqlHTTP = require('express-graphql'); +const cors = require('cors'); const root = require('./src/resolvers/RootResolver'); const schema = require('./src/schema/schema'); - const app = express(); const PORT = process.env.PORT || 8000; app.use(bodyParser.json()); - -app.use('/', (req, res) => { - res.sendStatus(200); -}); +app.use(cors()); app.use( '/graphql', @@ -23,6 +20,12 @@ app.use( }), ); + +// This handler is for the health checking from the load balancer +app.use('/', (req, res) => { + res.sendStatus(200); +}); + app.use((req, res) => { res.sendStatus(404); }); diff --git a/package.json b/package.json index 307759a..d7fa8f3 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "license": "MIT", "dependencies": { "body-parser": "1.17.2", + "cors": "2.8.4", "dotenv": "4.0.0", "es6-promise": "4.1.1", "eslint": "4.3.0", From dec0733d7cdeeeefbd12088e03c56d564925cf76 Mon Sep 17 00:00:00 2001 From: Ronan Fitzpatrick Date: Fri, 25 Aug 2017 12:06:01 -0700 Subject: [PATCH 09/23] Refactor testing (#14) * Add file structure * Build file structure * Complete User resolver * Add formatting * Add formatting * Initial Schema refactor * Complete User and Org Resolver * Initial issues model * Complete Repo Resolver and Model * Add Issue to schema * Complete issues model-resolver * Initial pullrequest-model * Add fetchPullRequest to repo * Complete pullrequest model and resolver * Complete milestone model and resolver * Refactor schema and user model * Complete Org model test * Complete User model test * Complete Issue model test * Organize code structure * Complete Milestone model test * Initial repos model test * Refactor Org model test * Complete Repo model test * Refactor User model test * Resolve linting errors * Refactor model format * Remove 'it' from tests * Complete root resolver test * Complete models refactor * Refactor root resolver test for new variable names * Format tests * Complete PullRequest tests * Refactor Orgs and Org model to match new schema layout * Refactor Repos model to match new schema layout * Refactor User and Issue model to match new schema layout * Refactor Repos and Repo to match new schema layout * Remove faulty tests * Remove unused lines from gitignore * Add Label model * Add file structure * Build file structure * Complete User resolver * Add formatting * Add formatting * Initial Schema refactor * Complete User and Org Resolver * Initial issues model * Complete Repo Resolver and Model * Add Issue to schema * Initial pullrequest-model * Add fetchPullRequest to repo * Complete pullrequest model and resolver * Complete milestone model and resolver * Refactor schema and user model * Complete Org model test * Complete User model test * Complete Issue model test * Organize code structure * Complete Milestone model test * Initial repos model test * Refactor Org model test * Complete Repo model test * Refactor User model test * Resolve linting errors * Refactor model format * Remove 'it' from tests * Complete root resolver test * Complete models refactor * Refactor root resolver test for new variable names * Format tests * Complete PullRequest tests * Refactor Orgs and Org model to match new schema layout * Refactor Repos model to match new schema layout * Refactor User and Issue model to match new schema layout * Refactor Repos and Repo to match new schema layout * Remove faulty tests * Remove unused lines from gitignore * Add Label model * Rebase merge conflicts * Remove package-lock.json * Remove duplicate file * Adding CORS in index.js * Clean up methods * Refactor testing * Refactor test for pull request * Remove duplicate file --- package-lock.json | 4035 ---------------------------- src/models/Issue.js | 1 - src/models/Org.js | 4 +- src/models/Orgs.js | 6 +- src/resolvers/RootResolver.js~HEAD | 19 - test/Issue.test.js | 21 + test/IssueMock.js | 83 + test/Label.test.js | 15 + test/Milestone.test.js | 16 + test/MilestoneMock.js | 43 + test/Org.test.js | 30 + test/OrgMock.js | 142 + test/Orgs.test.js | 111 + test/PullRequest.test.js | 369 +++ test/Repo.test.js | 151 ++ test/RepoMock.js | 1046 +++++++ test/Repos.test.js | 131 + test/ReposMock.js | 516 ++++ test/User.test.js | 84 + 19 files changed, 2763 insertions(+), 4060 deletions(-) delete mode 100644 package-lock.json delete mode 100644 src/resolvers/RootResolver.js~HEAD create mode 100644 test/Issue.test.js create mode 100644 test/IssueMock.js create mode 100644 test/Label.test.js create mode 100644 test/Milestone.test.js create mode 100644 test/MilestoneMock.js create mode 100644 test/Org.test.js create mode 100644 test/OrgMock.js create mode 100644 test/Orgs.test.js create mode 100644 test/PullRequest.test.js create mode 100644 test/Repo.test.js create mode 100644 test/RepoMock.js create mode 100644 test/Repos.test.js create mode 100644 test/ReposMock.js create mode 100644 test/User.test.js diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 9f5cb16..0000000 --- a/package-lock.json +++ /dev/null @@ -1,4035 +0,0 @@ -{ - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@types/graphql": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/@types/graphql/-/graphql-0.9.4.tgz", - "integrity": "sha512-ob2dps4itT/Le5DbxjssBXtBnloDIRUbkgtAvaB42mJ8pVIWMRuURD9WjnhaEGZ4Ql/EryXMQWeU8Y0EU73QLw==", - "optional": true - }, - "abbrev": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", - "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=" - }, - "accepts": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", - "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", - "requires": { - "mime-types": "2.1.15", - "negotiator": "0.6.1" - } - }, - "acorn": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.1.tgz", - "integrity": "sha512-vOk6uEMctu0vQrvuSqFdJyqj1Q0S5VTDL79qtjo+DhRr+1mmaD+tluFSCZqhvi/JUhXSzoZN2BhtstaPEeE8cw==" - }, - "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", - "requires": { - "acorn": "3.3.0" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=" - } - } - }, - "ajv": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.2.tgz", - "integrity": "sha1-R8aNaehvXZUxA7AHSpQw3GPaXjk=", - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "json-schema-traverse": "0.3.1", - "json-stable-stringify": "1.0.1" - } - }, - "ajv-keywords": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=" - }, - "ansi-escapes": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz", - "integrity": "sha1-W65SvkJIeN2Xg+iRDj/Cki6DyBs=" - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "anymatch": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", - "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", - "requires": { - "arrify": "1.0.1", - "micromatch": "2.3.11" - } - }, - "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "requires": { - "sprintf-js": "1.0.3" - } - }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "requires": { - "arr-flatten": "1.0.3" - } - }, - "arr-flatten": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.3.tgz", - "integrity": "sha1-onTthawIhJtr14R8RYB0XcUa37E=" - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "requires": { - "array-uniq": "1.0.3" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" - }, - "assertion-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", - "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=" - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" - }, - "babel-code-frame": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", - "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", - "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" - } - }, - "babel-core": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz", - "integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=", - "dev": true, - "requires": { - "babel-code-frame": "6.22.0", - "babel-generator": "6.25.0", - "babel-helpers": "6.24.1", - "babel-messages": "6.23.0", - "babel-register": "6.24.1", - "babel-runtime": "6.25.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", - "convert-source-map": "1.5.0", - "debug": "2.6.7", - "json5": "0.5.1", - "lodash": "4.17.4", - "minimatch": "3.0.4", - "path-is-absolute": "1.0.1", - "private": "0.1.7", - "slash": "1.0.0", - "source-map": "0.5.6" - } - }, - "babel-generator": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz", - "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=", - "dev": true, - "requires": { - "babel-messages": "6.23.0", - "babel-runtime": "6.25.0", - "babel-types": "6.25.0", - "detect-indent": "4.0.0", - "jsesc": "1.3.0", - "lodash": "4.17.4", - "source-map": "0.5.6", - "trim-right": "1.0.1" - } - }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true, - "requires": { - "babel-runtime": "6.25.0", - "babel-template": "6.25.0" - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, - "requires": { - "babel-runtime": "6.25.0" - } - }, - "babel-register": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", - "integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=", - "dev": true, - "requires": { - "babel-core": "6.25.0", - "babel-runtime": "6.25.0", - "core-js": "2.4.1", - "home-or-tmp": "2.0.0", - "lodash": "4.17.4", - "mkdirp": "0.5.1", - "source-map-support": "0.4.15" - } - }, - "babel-runtime": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.25.0.tgz", - "integrity": "sha1-M7mOql1IK7AajRqmtDetKwGuxBw=", - "dev": true, - "requires": { - "core-js": "2.4.1", - "regenerator-runtime": "0.10.5" - } - }, - "babel-template": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", - "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=", - "dev": true, - "requires": { - "babel-runtime": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", - "lodash": "4.17.4" - } - }, - "babel-traverse": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", - "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=", - "dev": true, - "requires": { - "babel-code-frame": "6.22.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", - "debug": "2.6.7", - "globals": "9.18.0", - "invariant": "2.2.2", - "lodash": "4.17.4" - } - }, - "babel-types": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", - "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=", - "dev": true, - "requires": { - "babel-runtime": "6.25.0", - "esutils": "2.0.2", - "lodash": "4.17.4", - "to-fast-properties": "1.0.3" - } - }, - "babylon": { - "version": "6.17.4", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz", - "integrity": "sha512-kChlV+0SXkjE0vUn9OZ7pBMWRFd8uq3mZe8x1K6jhuNcAFAtEnjchFAqB+dYEXKyd+JpT6eppRR78QAr5gTsUw==", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "binary-extensions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz", - "integrity": "sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=" - }, - "body-parser": { - "version": "1.17.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.17.2.tgz", - "integrity": "sha1-+IkqvI+eYn1Crtr7yma/WrmRBO4=", - "requires": { - "bytes": "2.4.0", - "content-type": "1.0.2", - "debug": "2.6.7", - "depd": "1.1.0", - "http-errors": "1.6.1", - "iconv-lite": "0.4.15", - "on-finished": "2.3.0", - "qs": "6.4.0", - "raw-body": "2.2.0", - "type-is": "1.6.15" - } - }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" - } - }, - "browser-stdout": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", - "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", - "dev": true - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" - }, - "bytes": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", - "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=" - }, - "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "requires": { - "callsites": "0.2.0" - } - }, - "callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=" - }, - "chai": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.0.tgz", - "integrity": "sha1-MxoDkbVcOvh0CunDt0WLwcOAXm0=", - "dev": true, - "requires": { - "assertion-error": "1.0.2", - "check-error": "1.0.2", - "deep-eql": "2.0.2", - "get-func-name": "2.0.0", - "pathval": "1.1.0", - "type-detect": "4.0.3" - } - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "dev": true - }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "requires": { - "anymatch": "1.3.0", - "async-each": "1.0.1", - "fsevents": "1.1.2", - "glob-parent": "2.0.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" - } - }, - "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==" - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "requires": { - "restore-cursor": "2.0.0" - } - }, - "cli-width": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", - "integrity": "sha1-sjTKIJsp72b8UY2bmNWEewDt8Ao=" - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" - }, - "color-convert": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", - "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "dev": true, - "requires": { - "graceful-readlink": "1.0.1" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.0", - "typedarray": "0.0.6" - } - }, - "configstore": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-1.4.0.tgz", - "integrity": "sha1-w1eB0FAdJowlxUuLF/YkDopPsCE=", - "requires": { - "graceful-fs": "4.1.11", - "mkdirp": "0.5.1", - "object-assign": "4.1.1", - "os-tmpdir": "1.0.2", - "osenv": "0.1.4", - "uuid": "2.0.3", - "write-file-atomic": "1.3.4", - "xdg-basedir": "2.0.0" - } - }, - "contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" - }, - "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" - }, - "content-type": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz", - "integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0=" - }, - "convert-source-map": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", - "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", - "dev": true - }, - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "core-js": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "requires": { - "lru-cache": "4.1.1", - "shebang-command": "1.2.0", - "which": "1.2.14" - } - }, - "debug": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", - "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", - "requires": { - "ms": "2.0.0" - } - }, - "deep-eql": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-2.0.2.tgz", - "integrity": "sha1-sbrAblbwp2d3aG1Qyf63XC7XZ5o=", - "dev": true, - "requires": { - "type-detect": "3.0.0" - }, - "dependencies": { - "type-detect": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-3.0.0.tgz", - "integrity": "sha1-RtDMhVOrt7E6NSsNbeov1Y8tm1U=", - "dev": true - } - } - }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true - }, - "deep-extend": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=" - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" - }, - "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", - "requires": { - "globby": "5.0.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.0", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "rimraf": "2.6.1" - } - }, - "depd": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", - "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=" - }, - "deprecated-decorator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz", - "integrity": "sha1-AJZjF7ehL+kvPMgx91g68ym4bDc=" - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "requires": { - "repeating": "2.0.1" - }, - "dependencies": { - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "1.0.2" - } - } - } - }, - "diff": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", - "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", - "dev": true - }, - "doctrine": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", - "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", - "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" - } - }, - "dotenv": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz", - "integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=" - }, - "duplexer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" - }, - "duplexify": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.0.tgz", - "integrity": "sha1-GqdzAC4VeEV+nZ1KULDMquvL1gQ=", - "requires": { - "end-of-stream": "1.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.0", - "stream-shift": "1.0.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "encodeurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", - "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=" - }, - "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", - "requires": { - "iconv-lite": "0.4.15" - } - }, - "end-of-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.0.0.tgz", - "integrity": "sha1-1FlucCc0qT5A6a+GQxnqvZn/Lw4=", - "requires": { - "once": "1.3.3" - } - }, - "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "requires": { - "is-arrayish": "0.2.1" - } - }, - "es6-promise": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.1.1.tgz", - "integrity": "sha512-OaU1hHjgJf+b0NzsxCg7NdIYERD6Hy/PEmFLTjw+b65scuisG3Kt4QoTvJ66BBkPZ581gr0kpoVzKnxniM8nng==" - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "eslint": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.3.0.tgz", - "integrity": "sha1-/NfJY3a780yF7mftABKimWQrEI8=", - "requires": { - "ajv": "5.2.2", - "babel-code-frame": "6.22.0", - "chalk": "1.1.3", - "concat-stream": "1.6.0", - "cross-spawn": "5.1.0", - "debug": "2.6.8", - "doctrine": "2.0.0", - "eslint-scope": "3.7.1", - "espree": "3.4.3", - "esquery": "1.0.0", - "estraverse": "4.2.0", - "esutils": "2.0.2", - "file-entry-cache": "2.0.0", - "functional-red-black-tree": "1.0.1", - "glob": "7.1.2", - "globals": "9.18.0", - "ignore": "3.3.3", - "imurmurhash": "0.1.4", - "inquirer": "3.2.1", - "is-resolvable": "1.0.0", - "js-yaml": "3.9.0", - "json-stable-stringify": "1.0.1", - "levn": "0.3.0", - "lodash": "4.17.4", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "natural-compare": "1.4.0", - "optionator": "0.8.2", - "path-is-inside": "1.0.2", - "pluralize": "4.0.0", - "progress": "2.0.0", - "require-uncached": "1.0.3", - "semver": "5.3.0", - "strip-json-comments": "2.0.1", - "table": "4.0.1", - "text-table": "0.2.0" - }, - "dependencies": { - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "requires": { - "ms": "2.0.0" - } - } - } - }, - "eslint-config-airbnb-base": { - "version": "11.3.1", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-11.3.1.tgz", - "integrity": "sha512-BXVH7PV5yiLjnkv49iOLJ8dWp+ljZf310ytQpqwrunFADiEbWRyN0tPGDU36FgEbdLvhJDWcJOngYDzPF4shDw==", - "requires": { - "eslint-restricted-globals": "0.1.1" - } - }, - "eslint-import-resolver-node": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz", - "integrity": "sha512-yUtXS15gIcij68NmXmP9Ni77AQuCN0itXbCc/jWd8C6/yKZaSNXicpC8cgvjnxVdmfsosIXrjpzFq7GcDryb6A==", - "requires": { - "debug": "2.6.8", - "resolve": "1.3.3" - }, - "dependencies": { - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "requires": { - "ms": "2.0.0" - } - } - } - }, - "eslint-module-utils": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz", - "integrity": "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==", - "requires": { - "debug": "2.6.8", - "pkg-dir": "1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "requires": { - "ms": "2.0.0" - } - } - } - }, - "eslint-plugin-import": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.7.0.tgz", - "integrity": "sha512-HGYmpU9f/zJaQiKNQOVfHUh2oLWW3STBrCgH0sHTX1xtsxYlH1zjLh8FlQGEIdZSdTbUMaV36WaZ6ImXkenGxQ==", - "requires": { - "builtin-modules": "1.1.1", - "contains-path": "0.1.0", - "debug": "2.6.8", - "doctrine": "1.5.0", - "eslint-import-resolver-node": "0.3.1", - "eslint-module-utils": "2.1.1", - "has": "1.0.1", - "lodash.cond": "4.5.2", - "minimatch": "3.0.4", - "read-pkg-up": "2.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "requires": { - "ms": "2.0.0" - } - }, - "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" - } - } - } - }, - "eslint-restricted-globals": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz", - "integrity": "sha1-NfDVy8ZMLj7WLpO0saevBbp+1Nc=" - }, - "eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", - "requires": { - "esrecurse": "4.2.0", - "estraverse": "4.2.0" - } - }, - "espree": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.4.3.tgz", - "integrity": "sha1-KRC1zNSc6JPC//+qtP2LOjG4I3Q=", - "requires": { - "acorn": "5.1.1", - "acorn-jsx": "3.0.1" - } - }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==" - }, - "esquery": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", - "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", - "requires": { - "estraverse": "4.2.0" - } - }, - "esrecurse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", - "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", - "requires": { - "estraverse": "4.2.0", - "object-assign": "4.1.1" - } - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" - }, - "etag": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz", - "integrity": "sha1-b2Ma7zNtbEY2K1F2QETOIWvjwFE=" - }, - "event-stream": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", - "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", - "requires": { - "duplexer": "0.1.1", - "from": "0.1.7", - "map-stream": "0.1.0", - "pause-stream": "0.0.11", - "split": "0.3.3", - "stream-combiner": "0.0.4", - "through": "2.3.8" - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "requires": { - "is-posix-bracket": "0.1.1" - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "requires": { - "fill-range": "2.2.3" - } - }, - "express": { - "version": "4.15.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.15.3.tgz", - "integrity": "sha1-urZdDwOqgMNYQIly/HAPkWlEtmI=", - "requires": { - "accepts": "1.3.3", - "array-flatten": "1.1.1", - "content-disposition": "0.5.2", - "content-type": "1.0.2", - "cookie": "0.3.1", - "cookie-signature": "1.0.6", - "debug": "2.6.7", - "depd": "1.1.0", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "etag": "1.8.0", - "finalhandler": "1.0.3", - "fresh": "0.5.0", - "merge-descriptors": "1.0.1", - "methods": "1.1.2", - "on-finished": "2.3.0", - "parseurl": "1.3.1", - "path-to-regexp": "0.1.7", - "proxy-addr": "1.1.4", - "qs": "6.4.0", - "range-parser": "1.2.0", - "send": "0.15.3", - "serve-static": "1.12.3", - "setprototypeof": "1.0.3", - "statuses": "1.3.1", - "type-is": "1.6.15", - "utils-merge": "1.0.0", - "vary": "1.1.1" - } - }, - "express-graphql": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/express-graphql/-/express-graphql-0.6.7.tgz", - "integrity": "sha512-VXcbGTbHcmLKwrSnCbaa6rahDUV1vMsj5BwCi1IDDDKsg6LMyAldb5UkJAfioAzogbZTDGOCFqm9KwhpQ9Up1A==", - "requires": { - "accepts": "1.3.3", - "content-type": "1.0.2", - "http-errors": "1.6.1", - "raw-body": "2.2.0" - } - }, - "external-editor": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.4.tgz", - "integrity": "sha1-HtkZnanL/i7y96MbL96LDRI2iXI=", - "requires": { - "iconv-lite": "0.4.18", - "jschardet": "1.5.0", - "tmp": "0.0.31" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz", - "integrity": "sha512-sr1ZQph3UwHTR0XftSbK85OvBbxe/abLGzEnPENCQwmHf7sck8Oyu4ob3LgBxWWxRoM+QszeUyl7jbqapu2TqA==" - } - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "requires": { - "is-extglob": "1.0.0" - } - }, - "fast-deep-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", - "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "requires": { - "escape-string-regexp": "1.0.5" - } - }, - "file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", - "requires": { - "flat-cache": "1.2.2", - "object-assign": "4.1.1" - } - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" - }, - "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", - "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" - } - }, - "finalhandler": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.3.tgz", - "integrity": "sha1-70fneVDpmXgOhgIqVg4yF+DQzIk=", - "requires": { - "debug": "2.6.7", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.1", - "statuses": "1.3.1", - "unpipe": "1.0.0" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - } - }, - "flat-cache": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", - "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=", - "requires": { - "circular-json": "0.3.3", - "del": "2.2.2", - "graceful-fs": "4.1.11", - "write": "0.2.1" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "requires": { - "for-in": "1.0.2" - } - }, - "formatio": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.2.0.tgz", - "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=", - "dev": true, - "requires": { - "samsam": "1.2.1" - } - }, - "forwarded": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", - "integrity": "sha1-Ge+YdMSuHCl7zweP3mOgm2aoQ2M=" - }, - "fresh": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", - "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=" - }, - "from": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", - "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=" - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", - "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", - "optional": true, - "requires": { - "nan": "2.6.2", - "node-pre-gyp": "0.6.36" - }, - "dependencies": { - "abbrev": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", - "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=", - "optional": true - }, - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "optional": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "aproba": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.1.tgz", - "integrity": "sha1-ldNgDwdxCqDpKYxyatXs8urLq6s=", - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", - "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", - "optional": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.2.9" - } - }, - "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", - "optional": true - }, - "assert-plus": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", - "optional": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "optional": true - }, - "aws-sign2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", - "optional": true - }, - "aws4": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", - "optional": true - }, - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "requires": { - "inherits": "2.0.3" - } - }, - "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", - "requires": { - "hoek": "2.16.3" - } - }, - "brace-expansion": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", - "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=", - "requires": { - "balanced-match": "0.4.2", - "concat-map": "0.0.1" - } - }, - "buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=" - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "optional": true - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "combined-stream": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", - "requires": { - "delayed-stream": "1.0.0" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "optional": true, - "requires": { - "boom": "2.10.1" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "optional": true - } - } - }, - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", - "optional": true - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "optional": true - }, - "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", - "optional": true - }, - "extsprintf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", - "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=" - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "optional": true - }, - "form-data": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", - "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", - "optional": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fstream": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.1" - } - }, - "fstream-ignore": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", - "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", - "optional": true, - "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" - } - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "optional": true, - "requires": { - "aproba": "1.1.1", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" - } - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "optional": true - } - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" - }, - "har-schema": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", - "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", - "optional": true - }, - "har-validator": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", - "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", - "optional": true, - "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - } - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "optional": true - }, - "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", - "optional": true, - "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" - } - }, - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" - }, - "http-signature": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", - "optional": true, - "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.0", - "sshpk": "1.13.0" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ini": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "optional": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "optional": true - }, - "jodid25519": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", - "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "optional": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "optional": true, - "requires": { - "jsonify": "0.0.0" - } - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "optional": true - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "optional": true - }, - "jsprim": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", - "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", - "optional": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.0.2", - "json-schema": "0.2.3", - "verror": "1.3.6" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "optional": true - } - } - }, - "mime-db": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", - "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=" - }, - "mime-types": { - "version": "2.1.15", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", - "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", - "requires": { - "mime-db": "1.27.0" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "optional": true - }, - "node-pre-gyp": { - "version": "0.6.36", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz", - "integrity": "sha1-22BBEst04NR3VU6bUFsXq936t4Y=", - "optional": true, - "requires": { - "mkdirp": "0.5.1", - "nopt": "4.0.1", - "npmlog": "4.1.0", - "rc": "1.2.1", - "request": "2.81.0", - "rimraf": "2.6.1", - "semver": "5.3.0", - "tar": "2.2.1", - "tar-pack": "3.4.0" - } - }, - "nopt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "optional": true, - "requires": { - "abbrev": "1.1.0", - "osenv": "0.1.4" - } - }, - "npmlog": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz", - "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==", - "optional": true, - "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "optional": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1.0.2" - } - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "optional": true - }, - "osenv": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", - "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", - "optional": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "performance-now": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", - "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", - "optional": true - }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "optional": true - }, - "qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", - "optional": true - }, - "rc": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", - "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", - "optional": true, - "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "optional": true - } - } - }, - "readable-stream": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", - "requires": { - "buffer-shims": "1.0.0", - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "1.0.1", - "util-deprecate": "1.0.2" - } - }, - "request": { - "version": "2.81.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", - "optional": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.15", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.0.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.6.0", - "uuid": "3.0.1" - } - }, - "rimraf": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", - "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", - "requires": { - "glob": "7.1.2" - } - }, - "safe-buffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", - "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=" - }, - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "optional": true - }, - "sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", - "optional": true, - "requires": { - "hoek": "2.16.3" - } - }, - "sshpk": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz", - "integrity": "sha1-/yo+T9BEl1Vf7Zezmg/YL6+zozw=", - "optional": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jodid25519": "1.0.2", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "optional": true - } - } - }, - "string_decoder": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", - "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=", - "requires": { - "safe-buffer": "5.0.1" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "stringstream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", - "optional": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "optional": true - }, - "tar": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - } - }, - "tar-pack": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.0.tgz", - "integrity": "sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ=", - "optional": true, - "requires": { - "debug": "2.6.8", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.2.9", - "rimraf": "2.6.1", - "tar": "2.2.1", - "uid-number": "0.0.6" - } - }, - "tough-cookie": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", - "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", - "optional": true, - "requires": { - "punycode": "1.4.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "optional": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "optional": true - }, - "uid-number": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", - "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", - "optional": true - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "uuid": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", - "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=", - "optional": true - }, - "verror": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", - "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", - "optional": true, - "requires": { - "extsprintf": "1.0.2" - } - }, - "wide-align": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", - "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", - "optional": true, - "requires": { - "string-width": "1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - } - } - }, - "function-bind": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz", - "integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E=" - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" - }, - "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", - "dev": true - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.3.3", - "path-is-absolute": "1.0.1" - } - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "requires": { - "is-glob": "2.0.1" - } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" - }, - "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", - "requires": { - "array-union": "1.0.2", - "arrify": "1.0.1", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, - "got": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/got/-/got-3.3.1.tgz", - "integrity": "sha1-5dDtSvVfw+701WAHdp2YGSvLLso=", - "requires": { - "duplexify": "3.5.0", - "infinity-agent": "2.0.3", - "is-redirect": "1.0.0", - "is-stream": "1.1.0", - "lowercase-keys": "1.0.0", - "nested-error-stacks": "1.0.2", - "object-assign": "3.0.0", - "prepend-http": "1.0.4", - "read-all-stream": "3.1.0", - "timed-out": "2.0.0" - }, - "dependencies": { - "object-assign": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=" - } - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" - }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", - "dev": true - }, - "graphql": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-0.10.5.tgz", - "integrity": "sha512-Q7cx22DiLhwHsEfUnUip1Ww/Vfx7FS0w6+iHItNuN61+XpegHSa3k5U0+6M5BcpavQImBwFiy0z3uYwY7cXMLQ==", - "requires": { - "iterall": "1.1.1" - } - }, - "graphql-tools": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-1.1.0.tgz", - "integrity": "sha1-jYbqaZew3qMIm2LcZV5HFGpmPrs=", - "requires": { - "@types/graphql": "0.9.4", - "deprecated-decorator": "0.1.6", - "lodash": "4.17.4", - "uuid": "3.1.0" - }, - "dependencies": { - "uuid": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", - "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==" - } - } - }, - "growl": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", - "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", - "dev": true - }, - "has": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", - "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", - "requires": { - "function-bind": "1.1.0" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "requires": { - "ansi-regex": "2.1.1" - } - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" - }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "hosted-git-info": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==" - }, - "http-errors": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz", - "integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc=", - "requires": { - "depd": "1.1.0", - "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": "1.3.1" - } - }, - "iconv-lite": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz", - "integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es=" - }, - "ignore": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.3.tgz", - "integrity": "sha1-QyNS5XrM2HqzEQ6C0/6g5HgSFW0=" - }, - "ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=" - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" - }, - "infinity-agent": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/infinity-agent/-/infinity-agent-2.0.3.tgz", - "integrity": "sha1-ReDi/3qesDCyfWK3SzdEt6esQhY=" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "1.3.3", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ini": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=" - }, - "inquirer": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.2.1.tgz", - "integrity": "sha512-QgW3eiPN8gpj/K5vVpHADJJgrrF0ho/dZGylikGX7iqAdRgC9FVKYKWFLx6hZDBFcOLEoSqINYrVPeFAeG/PdA==", - "requires": { - "ansi-escapes": "2.0.0", - "chalk": "2.0.1", - "cli-cursor": "2.1.0", - "cli-width": "2.1.0", - "external-editor": "2.0.4", - "figures": "2.0.0", - "lodash": "4.17.4", - "mute-stream": "0.0.7", - "run-async": "2.3.0", - "rx-lite": "4.0.8", - "rx-lite-aggregates": "4.0.8", - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "through": "2.3.8" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "requires": { - "color-convert": "1.9.0" - } - }, - "chalk": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", - "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.2.1" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "3.0.0" - } - }, - "supports-color": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz", - "integrity": "sha512-qxzYsob3yv6U+xMzPrv170y8AwGP7i74g+pbixCfD6rgso8BscLT2qXIuz6TpOaiJZ3mFgT5O9lyT9nMU4LfaA==", - "requires": { - "has-flag": "2.0.0" - } - } - } - }, - "invariant": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", - "dev": true, - "requires": { - "loose-envify": "1.3.1" - } - }, - "ipaddr.js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.3.0.tgz", - "integrity": "sha1-HgOlL9rYOou7KyXL9JmLTP/NPew=" - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "requires": { - "binary-extensions": "1.8.0" - } - }, - "is-buffer": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", - "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=" - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "requires": { - "builtin-modules": "1.1.1" - } - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "requires": { - "is-primitive": "2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "requires": { - "is-extglob": "1.0.0" - } - }, - "is-npm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", - "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=" - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "requires": { - "kind-of": "3.2.2" - } - }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=" - }, - "is-path-in-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", - "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", - "requires": { - "is-path-inside": "1.0.0" - } - }, - "is-path-inside": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", - "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", - "requires": { - "path-is-inside": "1.0.2" - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" - }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" - }, - "is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" - }, - "is-resolvable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", - "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", - "requires": { - "tryit": "1.0.3" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "requires": { - "isarray": "1.0.0" - } - }, - "isomorphic-fetch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", - "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", - "requires": { - "node-fetch": "1.7.1", - "whatwg-fetch": "2.0.3" - } - }, - "iterall": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.1.1.tgz", - "integrity": "sha1-9/CvEemgTsZCYmD1AZ2fzKTVAhQ=" - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" - }, - "js-yaml": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.9.0.tgz", - "integrity": "sha512-0LoUNELX4S+iofCT8f4uEHIiRBR+c2AINyC8qRWfC6QNruLtxVZRJaPcu/xwMgFIgDxF25tGHaDjvxzJCNE9yw==", - "requires": { - "argparse": "1.0.9", - "esprima": "4.0.0" - } - }, - "jschardet": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.5.0.tgz", - "integrity": "sha512-+Q8JsoEQbrdE+a/gg1F9XO92gcKXgpE5UACqr0sIubjDmBEkd+OOWPGzQeMrWSLxd73r4dHxBeRW7edHu5LmJQ==" - }, - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" - }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "requires": { - "jsonify": "0.0.0" - } - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", - "dev": true - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.5" - } - }, - "latest-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-1.0.1.tgz", - "integrity": "sha1-cs/Ebj6NG+ZR4eu1Tqn26pbzdLs=", - "requires": { - "package-json": "1.2.0" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "requires": { - "prelude-ls": "1.1.2", - "type-check": "0.3.2" - } - }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" - }, - "dependencies": { - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - } - } - }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" - }, - "lodash._baseassign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", - "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", - "requires": { - "lodash._basecopy": "3.0.1", - "lodash.keys": "3.1.2" - } - }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=" - }, - "lodash._basecreate": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", - "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", - "dev": true - }, - "lodash._bindcallback": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", - "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=" - }, - "lodash._createassigner": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz", - "integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=", - "requires": { - "lodash._bindcallback": "3.0.1", - "lodash._isiterateecall": "3.0.9", - "lodash.restparam": "3.6.1" - } - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=" - }, - "lodash.assign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz", - "integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=", - "requires": { - "lodash._baseassign": "3.2.0", - "lodash._createassigner": "3.1.1", - "lodash.keys": "3.1.2" - } - }, - "lodash.cond": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", - "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=" - }, - "lodash.create": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", - "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", - "dev": true, - "requires": { - "lodash._baseassign": "3.2.0", - "lodash._basecreate": "3.0.3", - "lodash._isiterateecall": "3.0.9" - } - }, - "lodash.defaults": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-3.1.2.tgz", - "integrity": "sha1-xzCLGNv4vJNy1wGnNJPGEZK9Liw=", - "requires": { - "lodash.assign": "3.2.0", - "lodash.restparam": "3.6.1" - } - }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" - }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" - }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "requires": { - "lodash._getnative": "3.9.1", - "lodash.isarguments": "3.1.0", - "lodash.isarray": "3.0.4" - } - }, - "lodash.restparam": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", - "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=" - }, - "lolex": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.6.0.tgz", - "integrity": "sha1-OpoCg0UqR9dDnnJzG54H1zhuSfY=", - "dev": true - }, - "loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", - "dev": true, - "requires": { - "js-tokens": "3.0.2" - } - }, - "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=" - }, - "lru-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } - }, - "map-stream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", - "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=" - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.3" - } - }, - "mime": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=" - }, - "mime-db": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", - "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=" - }, - "mime-types": { - "version": "2.1.15", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", - "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", - "requires": { - "mime-db": "1.27.0" - } - }, - "mimic-fn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=" - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "1.1.8" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "requires": { - "minimist": "0.0.8" - } - }, - "mocha": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.0.tgz", - "integrity": "sha512-pIU2PJjrPYvYRqVpjXzj76qltO9uBYI7woYAMoxbSefsa+vqAfptjoeevd6bUgwD0mPIO+hv9f7ltvsNreL2PA==", - "dev": true, - "requires": { - "browser-stdout": "1.3.0", - "commander": "2.9.0", - "debug": "2.6.8", - "diff": "3.2.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.1", - "growl": "1.9.2", - "json3": "3.3.2", - "lodash.create": "3.1.1", - "mkdirp": "0.5.1", - "supports-color": "3.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", - "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.3.3", - "path-is-absolute": "1.0.1" - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "supports-color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", - "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" - }, - "nan": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", - "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", - "optional": true - }, - "native-promise-only": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", - "integrity": "sha1-IKMYwwy0X3H+et+/eyHJnBRy7xE=", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" - }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" - }, - "nested-error-stacks": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-1.0.2.tgz", - "integrity": "sha1-GfYZWRUZ8JZ2mlupqG5u7sgjw88=", - "requires": { - "inherits": "2.0.3" - } - }, - "nock": { - "version": "9.0.14", - "resolved": "https://registry.npmjs.org/nock/-/nock-9.0.14.tgz", - "integrity": "sha1-IhFVAlMXPOKYvNifyoJeg4E8pys=", - "dev": true, - "requires": { - "chai": "3.5.0", - "debug": "2.6.7", - "deep-equal": "1.0.1", - "json-stringify-safe": "5.0.1", - "lodash": "4.17.4", - "mkdirp": "0.5.1", - "propagate": "0.4.0", - "qs": "6.4.0", - "semver": "5.3.0" - }, - "dependencies": { - "chai": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", - "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", - "dev": true, - "requires": { - "assertion-error": "1.0.2", - "deep-eql": "0.1.3", - "type-detect": "1.0.0" - } - }, - "deep-eql": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", - "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", - "dev": true, - "requires": { - "type-detect": "0.1.1" - }, - "dependencies": { - "type-detect": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", - "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", - "dev": true - } - } - }, - "type-detect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", - "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=", - "dev": true - } - } - }, - "node-fetch": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.1.tgz", - "integrity": "sha512-j8XsFGCLw79vWXkZtMSmmLaOk9z5SQ9bV/tkbZVCqvgwzrjAGq66igobLofHtF63NvMTp2WjytpsNTGKa+XRIQ==", - "requires": { - "encoding": "0.1.12", - "is-stream": "1.1.0" - } - }, - "nodemon": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.11.0.tgz", - "integrity": "sha1-ImxWK9KnsT09dRi0mtSCijYj0Gw=", - "requires": { - "chokidar": "1.7.0", - "debug": "2.6.7", - "es6-promise": "3.3.1", - "ignore-by-default": "1.0.1", - "lodash.defaults": "3.1.2", - "minimatch": "3.0.4", - "ps-tree": "1.1.0", - "touch": "1.0.0", - "undefsafe": "0.0.3", - "update-notifier": "0.5.0" - }, - "dependencies": { - "es6-promise": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", - "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" - } - } - }, - "nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", - "requires": { - "abbrev": "1.1.0" - } - }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "requires": { - "hosted-git-info": "2.5.0", - "is-builtin-module": "1.0.0", - "semver": "5.3.0", - "validate-npm-package-license": "3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "requires": { - "remove-trailing-separator": "1.0.2" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" - } - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", - "requires": { - "wrappy": "1.0.2" - } - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "requires": { - "mimic-fn": "1.1.0" - } - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "requires": { - "deep-is": "0.1.3", - "fast-levenshtein": "2.0.6", - "levn": "0.3.0", - "prelude-ls": "1.1.2", - "type-check": "0.3.2", - "wordwrap": "1.0.0" - } - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" - }, - "osenv": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", - "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "p-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=" - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "requires": { - "p-limit": "1.1.0" - } - }, - "package-json": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-1.2.0.tgz", - "integrity": "sha1-yOysCUInzfdqMWh07QXifMk5oOA=", - "requires": { - "got": "3.3.1", - "registry-url": "3.1.0" - } - }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "requires": { - "error-ex": "1.3.1" - } - }, - "parseurl": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", - "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=" - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "2.0.1" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" - }, - "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "requires": { - "pify": "2.3.0" - } - }, - "pathval": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", - "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", - "dev": true - }, - "pause-stream": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", - "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", - "requires": { - "through": "2.3.8" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { - "pinkie": "2.0.4" - } - }, - "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "requires": { - "find-up": "1.1.2" - } - }, - "pluralize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-4.0.0.tgz", - "integrity": "sha1-WbcIwcAZCi9pLxx2GMRGsFL9F2I=" - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" - }, - "private": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", - "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=", - "dev": true - }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" - }, - "progress": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", - "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=" - }, - "propagate": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/propagate/-/propagate-0.4.0.tgz", - "integrity": "sha1-8/zKCm/gZzanulcpZgaWF8EwtIE=", - "dev": true - }, - "proxy-addr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.4.tgz", - "integrity": "sha1-J+VF9pYKRKYn2bREZ+NcG2tM4vM=", - "requires": { - "forwarded": "0.1.0", - "ipaddr.js": "1.3.0" - } - }, - "ps-tree": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.1.0.tgz", - "integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=", - "requires": { - "event-stream": "3.3.4" - } - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, - "qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=" - }, - "randomatic": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", - "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "requires": { - "is-buffer": "1.1.5" - } - } - } - }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" - }, - "raw-body": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.2.0.tgz", - "integrity": "sha1-mUl2z2pQlqQRYoQEkvC9xdbn+5Y=", - "requires": { - "bytes": "2.4.0", - "iconv-lite": "0.4.15", - "unpipe": "1.0.0" - } - }, - "rc": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", - "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", - "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - } - } - }, - "read-all-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", - "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", - "requires": { - "pinkie-promise": "2.0.1", - "readable-stream": "2.3.0" - } - }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "requires": { - "load-json-file": "2.0.0", - "normalize-package-data": "2.4.0", - "path-type": "2.0.0" - } - }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "requires": { - "find-up": "2.1.0", - "read-pkg": "2.0.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "2.0.0" - } - } - } - }, - "readable-stream": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.0.tgz", - "integrity": "sha512-c7KMXGd4b48nN3OJ1U9qOsn6pXNzf6kLd3kdZCkg2sxAcoiufInqF0XckwEnlrcwuaYwonlNK8GQUIOC/WC7sg==", - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.0", - "string_decoder": "1.0.2", - "util-deprecate": "1.0.2" - } - }, - "readdirp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", - "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", - "requires": { - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "readable-stream": "2.3.0", - "set-immediate-shim": "1.0.1" - } - }, - "regenerator-runtime": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", - "dev": true - }, - "regex-cache": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", - "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", - "requires": { - "is-equal-shallow": "0.1.3", - "is-primitive": "2.0.0" - } - }, - "registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", - "requires": { - "rc": "1.2.1" - } - }, - "remove-trailing-separator": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", - "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=" - }, - "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" - }, - "repeating": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", - "integrity": "sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw=", - "requires": { - "is-finite": "1.0.2" - } - }, - "require-uncached": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "requires": { - "caller-path": "0.1.0", - "resolve-from": "1.0.1" - } - }, - "resolve": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", - "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", - "requires": { - "path-parse": "1.0.5" - } - }, - "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=" - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "requires": { - "onetime": "2.0.1", - "signal-exit": "3.0.2" - } - }, - "rimraf": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", - "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", - "requires": { - "glob": "7.1.2" - } - }, - "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "requires": { - "is-promise": "2.1.0" - } - }, - "rx-lite": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=" - }, - "rx-lite-aggregates": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", - "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", - "requires": { - "rx-lite": "4.0.8" - } - }, - "safe-buffer": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.0.tgz", - "integrity": "sha512-aSLEDudu6OoRr/2rU609gRmnYboRLxgDG1z9o2Q0os7236FwvcqIOO8r8U5JUEwivZOhDaKlFO4SbPTJYyBEyQ==" - }, - "samsam": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.2.1.tgz", - "integrity": "sha1-7dOQk6MYQ3DLhZJDsr3yVefY6mc=", - "dev": true - }, - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" - }, - "semver-diff": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", - "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", - "requires": { - "semver": "5.3.0" - } - }, - "send": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/send/-/send-0.15.3.tgz", - "integrity": "sha1-UBP5+ZAj31DRvZiSwZ4979HVMwk=", - "requires": { - "debug": "2.6.7", - "depd": "1.1.0", - "destroy": "1.0.4", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "etag": "1.8.0", - "fresh": "0.5.0", - "http-errors": "1.6.1", - "mime": "1.3.4", - "ms": "2.0.0", - "on-finished": "2.3.0", - "range-parser": "1.2.0", - "statuses": "1.3.1" - } - }, - "serve-static": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.3.tgz", - "integrity": "sha1-n0uhni8wMMVH+K+ZEHg47DjVseI=", - "requires": { - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "parseurl": "1.3.1", - "send": "0.15.3" - } - }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" - }, - "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "requires": { - "shebang-regex": "1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" - }, - "sinon": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-2.4.1.tgz", - "integrity": "sha512-vFTrO9Wt0ECffDYIPSP/E5bBugt0UjcBQOfQUMh66xzkyPEnhl/vM2LRZi2ajuTdkH07sA6DzrM6KvdvGIH8xw==", - "dev": true, - "requires": { - "diff": "3.2.0", - "formatio": "1.2.0", - "lolex": "1.6.0", - "native-promise-only": "0.8.1", - "path-to-regexp": "1.7.0", - "samsam": "1.2.1", - "text-encoding": "0.6.4", - "type-detect": "4.0.3" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "path-to-regexp": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", - "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", - "dev": true, - "requires": { - "isarray": "0.0.1" - } - } - } - }, - "sinon-chai": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-2.12.0.tgz", - "integrity": "sha512-/J38xAWY5ppvRKuSrdnpVv7rWmxjfma9lL/iYaqn+ge/JynkhM9w8PaFAoGvGv+Tj2nEQWkkS8S4Syt4Lw1K6Q==", - "dev": true - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true - }, - "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=" - }, - "slide": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=" - }, - "source-map": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", - "dev": true - }, - "source-map-support": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", - "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", - "dev": true, - "requires": { - "source-map": "0.5.6" - } - }, - "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", - "requires": { - "spdx-license-ids": "1.2.2" - } - }, - "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" - }, - "spdx-license-ids": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" - }, - "split": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", - "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", - "requires": { - "through": "2.3.8" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" - }, - "stream-combiner": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", - "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", - "requires": { - "duplexer": "0.1.1" - } - }, - "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" - }, - "string_decoder": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.2.tgz", - "integrity": "sha1-sp4fThEl+pehA4K4pTNze3SR4Xk=", - "requires": { - "safe-buffer": "5.0.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", - "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=" - } - } - }, - "string-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", - "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=", - "requires": { - "strip-ansi": "3.0.1" - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "requires": { - "ansi-regex": "3.0.0" - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - }, - "table": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/table/-/table-4.0.1.tgz", - "integrity": "sha1-qBFsEz+sLGH0pCCrbN9cTWHw5DU=", - "requires": { - "ajv": "4.11.8", - "ajv-keywords": "1.5.1", - "chalk": "1.1.3", - "lodash": "4.17.4", - "slice-ansi": "0.0.4", - "string-width": "2.1.1" - }, - "dependencies": { - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - } - } - }, - "text-encoding": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", - "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=", - "dev": true - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - }, - "timed-out": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-2.0.0.tgz", - "integrity": "sha1-84sK6B03R9YoAB9B2vxlKs5nHAo=" - }, - "tmp": { - "version": "0.0.31", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", - "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", - "requires": { - "os-tmpdir": "1.0.2" - } - }, - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - }, - "touch": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-1.0.0.tgz", - "integrity": "sha1-RJy+LbrlqMgDjjDXH6D/RklHxN4=", - "requires": { - "nopt": "1.0.10" - } - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, - "tryit": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", - "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=" - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "requires": { - "prelude-ls": "1.1.2" - } - }, - "type-detect": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.3.tgz", - "integrity": "sha1-Dj8mcLRAmbC0bChNE2p+9Jx0wuo=", - "dev": true - }, - "type-is": { - "version": "1.6.15", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", - "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", - "requires": { - "media-typer": "0.3.0", - "mime-types": "2.1.15" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, - "undefsafe": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-0.0.3.tgz", - "integrity": "sha1-7Mo6A+VrmvFzhbqsgSrIO5lKli8=" - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "update-notifier": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-0.5.0.tgz", - "integrity": "sha1-B7XcIGazYnqztPUwEw9+3doHpMw=", - "requires": { - "chalk": "1.1.3", - "configstore": "1.4.0", - "is-npm": "1.0.0", - "latest-version": "1.0.1", - "repeating": "1.1.3", - "semver-diff": "2.1.0", - "string-length": "1.0.1" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "utils-merge": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", - "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=" - }, - "uuid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=" - }, - "validate-npm-package-license": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", - "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" - } - }, - "vary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.1.tgz", - "integrity": "sha1-Z1Neu2lMHVIldFeYRmUyP1h+jTc=" - }, - "whatwg-fetch": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", - "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=" - }, - "which": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", - "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", - "requires": { - "isexe": "2.0.0" - } - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", - "requires": { - "mkdirp": "0.5.1" - } - }, - "write-file-atomic": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", - "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "slide": "1.1.6" - } - }, - "xdg-basedir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz", - "integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=", - "requires": { - "os-homedir": "1.0.2" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - } - } -} diff --git a/src/models/Issue.js b/src/models/Issue.js index 354f078..34b3dcf 100644 --- a/src/models/Issue.js +++ b/src/models/Issue.js @@ -1,5 +1,4 @@ /* eslint-disable no-param-reassign */ - const Label = require('./Label'); function getAssignee(assignee) { diff --git a/src/models/Org.js b/src/models/Org.js index c90e8f1..724532a 100644 --- a/src/models/Org.js +++ b/src/models/Org.js @@ -31,10 +31,10 @@ class Org { this.login = login; this.url = url; this.avatarUrl = avatar_url; - this.reposUrl = repos_url; + this.reposUrl = `${repos_url}?access_token=${process.env.TKN}`; } - orgRepos() { + get orgRepos() { return fetch(this.reposUrl) .then(getJson) .then(addToArray) diff --git a/src/models/Orgs.js b/src/models/Orgs.js index 3cca48a..935ae61 100644 --- a/src/models/Orgs.js +++ b/src/models/Orgs.js @@ -31,17 +31,17 @@ class Orgs { } get orgs() { - return this.orgName ? this.getOrg() : this.getAllUserOrgs(); + return this.orgName ? this.getOrg : this.getAllUserOrgs; } - getAllUserOrgs() { + get getAllUserOrgs() { return fetch(this.userOrgsUrl) .then(getJson) .then(filterRelevantFields) .then(createOrgInstances); } - getOrg() { + get getOrg() { return fetch(this.userOrgUrl) .then(getJson) .then(addToArray) diff --git a/src/resolvers/RootResolver.js~HEAD b/src/resolvers/RootResolver.js~HEAD deleted file mode 100644 index 14d5fb6..0000000 --- a/src/resolvers/RootResolver.js~HEAD +++ /dev/null @@ -1,19 +0,0 @@ -const User = require('../models/User'); -const Orgs = require('../models/Orgs'); -const Repos = require('../models/Repos'); - -const root = { - user(userName) { - return new User(userName); - }, - - orgs({ userName, orgName }) { - return new Orgs(userName, orgName); - }, - - repos({ userName, repoName, orgName }) { - return new Repos(userName, repoName, orgName); - }, -}; - -module.exports = root; diff --git a/test/Issue.test.js b/test/Issue.test.js new file mode 100644 index 0000000..f3410ad --- /dev/null +++ b/test/Issue.test.js @@ -0,0 +1,21 @@ +/* eslint-disable no-undef, no-unused-expressions */ +const { expect } = require('chai'); +const { issue } = require('./IssueMock'); +const Issue = require('../src/models/Issue'); + +describe('Issue model', () => { + const newIssue = new Issue(issue); + + it('accepts an issue as passed in arguments', () => { + expect(newIssue.id).to.equal(247537446); + expect(newIssue.title).to.equal('Test'); + expect(newIssue.labels).to.deep.equal([]); + expect(newIssue.state).to.equal('closed'); + expect(newIssue.number).to.equal(5); + expect(newIssue.assignee).to.equal('Not assigned'); + expect(newIssue.assigneeAvatar).to.equal('Not assigned'); + }); + after((done) => { + done(); + }); +}); diff --git a/test/IssueMock.js b/test/IssueMock.js new file mode 100644 index 0000000..5216a9f --- /dev/null +++ b/test/IssueMock.js @@ -0,0 +1,83 @@ +const issue = { + url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/5', + repository_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox', + labels_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/5/labels{/name}', + comments_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/5/comments', + events_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/5/events', + html_url: 'https://github.com/michaelmurray6298/react-inbox/issues/5', + id: 247537446, + number: 5, + title: 'Test', + user: { + login: 'michaelmurray6298', + id: 24865792, + avatar_url: 'https://avatars1.githubusercontent.com/u/24865792?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/michaelmurray6298', + html_url: 'https://github.com/michaelmurray6298', + followers_url: 'https://api.github.com/users/michaelmurray6298/followers', + following_url: 'https://api.github.com/users/michaelmurray6298/following{/other_user}', + gists_url: 'https://api.github.com/users/michaelmurray6298/gists{/gist_id}', + starred_url: 'https://api.github.com/users/michaelmurray6298/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/michaelmurray6298/subscriptions', + organizations_url: 'https://api.github.com/users/michaelmurray6298/orgs', + repos_url: 'https://api.github.com/users/michaelmurray6298/repos', + events_url: 'https://api.github.com/users/michaelmurray6298/events{/privacy}', + received_events_url: 'https://api.github.com/users/michaelmurray6298/received_events', + type: 'User', + site_admin: false, + }, + labels: [ + + ], + state: 'closed', + locked: false, + assignee: null, + assignees: [ + + ], + milestone: { + url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/milestones/1', + html_url: 'https://github.com/michaelmurray6298/react-inbox/milestone/1', + labels_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/milestones/1/labels', + id: 2677830, + number: 1, + title: 'Test', + description: '', + creator: { + login: 'michaelmurray6298', + id: 24865792, + avatar_url: 'https://avatars1.githubusercontent.com/u/24865792?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/michaelmurray6298', + html_url: 'https://github.com/michaelmurray6298', + followers_url: 'https://api.github.com/users/michaelmurray6298/followers', + following_url: 'https://api.github.com/users/michaelmurray6298/following{/other_user}', + gists_url: 'https://api.github.com/users/michaelmurray6298/gists{/gist_id}', + starred_url: 'https://api.github.com/users/michaelmurray6298/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/michaelmurray6298/subscriptions', + organizations_url: 'https://api.github.com/users/michaelmurray6298/orgs', + repos_url: 'https://api.github.com/users/michaelmurray6298/repos', + events_url: 'https://api.github.com/users/michaelmurray6298/events{/privacy}', + received_events_url: 'https://api.github.com/users/michaelmurray6298/received_events', + type: 'User', + site_admin: false, + }, + open_issues: 1, + closed_issues: 1, + state: 'open', + created_at: '2017-08-02T22:09:34Z', + updated_at: '2017-08-02T22:13:26Z', + due_on: '2017-08-20T07:00:00Z', + closed_at: null, + }, + comments: 0, + created_at: '2017-08-02T22:09:55Z', + updated_at: '2017-08-02T22:13:10Z', + closed_at: '2017-08-02T22:11:40Z', + body: '', +}; + +module.exports = { + issue, +}; diff --git a/test/Label.test.js b/test/Label.test.js new file mode 100644 index 0000000..8afb391 --- /dev/null +++ b/test/Label.test.js @@ -0,0 +1,15 @@ +/* eslint-disable no-undef, no-unused-expressions */ +const { expect } = require('chai'); +const Label = require('../src/models/Label'); + +describe('Label model', () => { + const label = new Label({ name: 'dev', color: 'purple' }); + + it('accepts name and color as passed in arguments', () => { + expect(label.name).to.equal('dev'); + expect(label.color).to.equal('purple'); + }); + after((done) => { + done(); + }); +}); diff --git a/test/Milestone.test.js b/test/Milestone.test.js new file mode 100644 index 0000000..d0b1d0c --- /dev/null +++ b/test/Milestone.test.js @@ -0,0 +1,16 @@ +/* eslint-disable no-undef, no-unused-expressions */ +const { expect } = require('chai'); +const milestone = require('./MilestoneMock'); + +describe('Milestone model', () => { + it('accepts id, title, open issues, closed issues, and due on as passed in arguments', () => { + expect(milestone.milestone.id).to.equal(2677830); + expect(milestone.milestone.title).to.equal('Test'); + expect(milestone.milestone.openIssues).to.equal(1); + expect(milestone.milestone.closedIssues).to.equal(1); + expect(milestone.milestone.dueOn).to.equal('2017-08-20T07:00:00Z'); + }); + after((done) => { + done(); + }); +}); diff --git a/test/MilestoneMock.js b/test/MilestoneMock.js new file mode 100644 index 0000000..5387a05 --- /dev/null +++ b/test/MilestoneMock.js @@ -0,0 +1,43 @@ +const Milestone = require('../src/models/Milestone'); + +const milestone = new Milestone( + { + url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/milestones/1', + html_url: 'https://github.com/michaelmurray6298/react-inbox/milestone/1', + labels_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/milestones/1/labels', + id: 2677830, + number: 1, + title: 'Test', + description: '', + creator: { + login: 'michaelmurray6298', + id: 24865792, + avatar_url: 'https://avatars1.githubusercontent.com/u/24865792?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/michaelmurray6298', + html_url: 'https://github.com/michaelmurray6298', + followers_url: 'https://api.github.com/users/michaelmurray6298/followers', + following_url: 'https://api.github.com/users/michaelmurray6298/following{/other_user}', + gists_url: 'https://api.github.com/users/michaelmurray6298/gists{/gist_id}', + starred_url: 'https://api.github.com/users/michaelmurray6298/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/michaelmurray6298/subscriptions', + organizations_url: 'https://api.github.com/users/michaelmurray6298/orgs', + repos_url: 'https://api.github.com/users/michaelmurray6298/repos', + events_url: 'https://api.github.com/users/michaelmurray6298/events{/privacy}', + received_events_url: 'https://api.github.com/users/michaelmurray6298/received_events', + type: 'User', + site_admin: false, + }, + open_issues: 1, + closed_issues: 1, + state: 'open', + created_at: '2017-08-02T22:09:34Z', + updated_at: '2017-08-02T22:13:26Z', + due_on: '2017-08-20T07:00:00Z', + closed_at: null, + }, +); + +module.exports = { + milestone, +}; diff --git a/test/Org.test.js b/test/Org.test.js new file mode 100644 index 0000000..9359ced --- /dev/null +++ b/test/Org.test.js @@ -0,0 +1,30 @@ +/* eslint-disable no-undef, no-unused-expressions */ +const { expect } = require('chai'); +require('dotenv').config(); +const { org, reposFetch } = require('./OrgMock'); +const nock = require('nock'); +const Repo = require('../src/models/Repo'); + +describe('Org model', () => { + it('accepts passed in arguments', () => { + expect(org.id).to.equal(29638033); + expect(org.login).to.equal('ski-ski'); + expect(org.url).to.equal('https://api.github.com/orgs/ski-ski'); + expect(org.avatarUrl).to.equal('https://avatars3.githubusercontent.com/u/29638033?v=4'); + expect(org.reposUrl).to.equal(`https://api.github.com/orgs/ski-ski/repos?access_token=${process.env.TKN}`); + }); + after((done) => { + done(); + }); + + it('should fetch the user orgs', async () => { + nock('https://api.github.com') + .get(`/orgs/ski-ski/repos?access_token=${process.env.TKN}`) + .reply(200, reposFetch); + const singleOrg = await org.orgRepos; + expect(singleOrg[0]).to.be.an.instanceof(Repo); + }); + after((done) => { + done(); + }); +}); diff --git a/test/OrgMock.js b/test/OrgMock.js new file mode 100644 index 0000000..85d4482 --- /dev/null +++ b/test/OrgMock.js @@ -0,0 +1,142 @@ +const Org = require('../src/models/Org'); + +const org = new Org({ + login: 'ski-ski', + id: 29638033, + url: 'https://api.github.com/orgs/ski-ski', + repos_url: 'https://api.github.com/orgs/ski-ski/repos', + events_url: 'https://api.github.com/orgs/ski-ski/events', + hooks_url: 'https://api.github.com/orgs/ski-ski/hooks', + issues_url: 'https://api.github.com/orgs/ski-ski/issues', + members_url: 'https://api.github.com/orgs/ski-ski/members{/member}', + public_members_url: 'https://api.github.com/orgs/ski-ski/public_members{/member}', + avatar_url: 'https://avatars3.githubusercontent.com/u/29638033?v=4', + description: null, + has_organization_projects: true, + has_repository_projects: true, + public_repos: 2, + public_gists: 0, + followers: 0, + following: 0, + html_url: 'https://github.com/ski-ski', + created_at: '2017-06-22T18:04:32Z', + updated_at: '2017-06-22T18:05:56Z', + type: 'Organization', + total_private_repos: 0, + owned_private_repos: 0, + private_gists: 0, + disk_usage: 472, + collaborators: 0, + billing_email: 'michaelmurray6298@gmail.com', + plan: { + name: 'free', + space: 976562499, + private_repos: 0, + filled_seats: 2, + seats: 0, + }, + default_repository_permission: 'admin', + members_can_create_repositories: true, +}); + +const reposFetch = [ + { + id: 95143360, + name: 'skiski-app', + full_name: 'ski-ski/skiski-app', + owner: { + login: 'ski-ski', + id: 29638033, + avatar_url: 'https://avatars3.githubusercontent.com/u/29638033?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/ski-ski', + html_url: 'https://github.com/ski-ski', + followers_url: 'https://api.github.com/users/ski-ski/followers', + following_url: 'https://api.github.com/users/ski-ski/following{/other_user}', + gists_url: 'https://api.github.com/users/ski-ski/gists{/gist_id}', + starred_url: 'https://api.github.com/users/ski-ski/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/ski-ski/subscriptions', + organizations_url: 'https://api.github.com/users/ski-ski/orgs', + repos_url: 'https://api.github.com/users/ski-ski/repos', + events_url: 'https://api.github.com/users/ski-ski/events{/privacy}', + received_events_url: 'https://api.github.com/users/ski-ski/received_events', + type: 'Organization', + site_admin: false, + }, + private: false, + html_url: 'https://github.com/ski-ski/skiski-app', + description: null, + fork: false, + url: 'https://api.github.com/repos/ski-ski/skiski-app', + forks_url: 'https://api.github.com/repos/ski-ski/skiski-app/forks', + keys_url: 'https://api.github.com/repos/ski-ski/skiski-app/keys{/key_id}', + collaborators_url: 'https://api.github.com/repos/ski-ski/skiski-app/collaborators{/collaborator}', + teams_url: 'https://api.github.com/repos/ski-ski/skiski-app/teams', + hooks_url: 'https://api.github.com/repos/ski-ski/skiski-app/hooks', + issue_events_url: 'https://api.github.com/repos/ski-ski/skiski-app/issues/events{/number}', + events_url: 'https://api.github.com/repos/ski-ski/skiski-app/events', + assignees_url: 'https://api.github.com/repos/ski-ski/skiski-app/assignees{/user}', + branches_url: 'https://api.github.com/repos/ski-ski/skiski-app/branches{/branch}', + tags_url: 'https://api.github.com/repos/ski-ski/skiski-app/tags', + blobs_url: 'https://api.github.com/repos/ski-ski/skiski-app/git/blobs{/sha}', + git_tags_url: 'https://api.github.com/repos/ski-ski/skiski-app/git/tags{/sha}', + git_refs_url: 'https://api.github.com/repos/ski-ski/skiski-app/git/refs{/sha}', + trees_url: 'https://api.github.com/repos/ski-ski/skiski-app/git/trees{/sha}', + statuses_url: 'https://api.github.com/repos/ski-ski/skiski-app/statuses/{sha}', + languages_url: 'https://api.github.com/repos/ski-ski/skiski-app/languages', + stargazers_url: 'https://api.github.com/repos/ski-ski/skiski-app/stargazers', + contributors_url: 'https://api.github.com/repos/ski-ski/skiski-app/contributors', + subscribers_url: 'https://api.github.com/repos/ski-ski/skiski-app/subscribers', + subscription_url: 'https://api.github.com/repos/ski-ski/skiski-app/subscription', + commits_url: 'https://api.github.com/repos/ski-ski/skiski-app/commits{/sha}', + git_commits_url: 'https://api.github.com/repos/ski-ski/skiski-app/git/commits{/sha}', + comments_url: 'https://api.github.com/repos/ski-ski/skiski-app/comments{/number}', + issue_comment_url: 'https://api.github.com/repos/ski-ski/skiski-app/issues/comments{/number}', + contents_url: 'https://api.github.com/repos/ski-ski/skiski-app/contents/{+path}', + compare_url: 'https://api.github.com/repos/ski-ski/skiski-app/compare/{base}...{head}', + merges_url: 'https://api.github.com/repos/ski-ski/skiski-app/merges', + archive_url: 'https://api.github.com/repos/ski-ski/skiski-app/{archive_format}{/ref}', + downloads_url: 'https://api.github.com/repos/ski-ski/skiski-app/downloads', + issues_url: 'https://api.github.com/repos/ski-ski/skiski-app/issues{/number}', + pulls_url: 'https://api.github.com/repos/ski-ski/skiski-app/pulls{/number}', + milestones_url: 'https://api.github.com/repos/ski-ski/skiski-app/milestones{/number}', + notifications_url: 'https://api.github.com/repos/ski-ski/skiski-app/notifications{?since,all,participating}', + labels_url: 'https://api.github.com/repos/ski-ski/skiski-app/labels{/name}', + releases_url: 'https://api.github.com/repos/ski-ski/skiski-app/releases{/id}', + deployments_url: 'https://api.github.com/repos/ski-ski/skiski-app/deployments', + created_at: '2017-06-22T18:08:21Z', + updated_at: '2017-06-23T22:48:38Z', + pushed_at: '2017-08-03T02:23:38Z', + git_url: 'git://github.com/ski-ski/skiski-app.git', + ssh_url: 'git@github.com:ski-ski/skiski-app.git', + clone_url: 'https://github.com/ski-ski/skiski-app.git', + svn_url: 'https://github.com/ski-ski/skiski-app', + homepage: null, + size: 472, + stargazers_count: 0, + watchers_count: 0, + language: 'JavaScript', + has_issues: true, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + forks_count: 0, + mirror_url: null, + open_issues_count: 2, + forks: 0, + open_issues: 2, + watchers: 0, + default_branch: 'master', + permissions: { + admin: false, + push: false, + pull: true, + }, + }, +]; + +module.exports = { + org, + reposFetch, +}; diff --git a/test/Orgs.test.js b/test/Orgs.test.js new file mode 100644 index 0000000..3fe3e5a --- /dev/null +++ b/test/Orgs.test.js @@ -0,0 +1,111 @@ +/* eslint-disable no-undef, no-unused-expressions */ +const { expect } = require('chai'); +require('dotenv').config(); +const nock = require('nock'); +const Orgs = require('../src/models/Orgs'); +const Org = require('../src/models/Org'); + +describe('Orgs model', () => { + const orgs = new Orgs('michaelmurray6298'); + const org = new Orgs('michaelmurray6298', 'ski-ski'); + + it('accepts username and orgname as passed in arguments', () => { + expect(org.userOrgsUrl).to.equal(`https://api.github.com/users/michaelmurray6298/orgs?access_token=${process.env.TKN}`); + expect(org.orgName).to.equal('ski-ski'); + }); + after((done) => { + done(); + }); + + it('contains user orgs url', () => { + expect(orgs.userOrgsUrl).to.equal(`https://api.github.com/users/michaelmurray6298/orgs?access_token=${process.env.TKN}`); + }); + after((done) => { + done(); + }); + + it('contains specific org url if an orgname is passed in', () => { + expect(org.userOrgsUrl).to.equal(`https://api.github.com/users/michaelmurray6298/orgs?access_token=${process.env.TKN}`); + expect(org.userOrgUrl).to.equal(`https://api.github.com/orgs/ski-ski?access_token=${process.env.TKN}`); + }); + after((done) => { + done(); + }); + + it('should fetch the user orgs', async () => { + const orgsFetch = [ + { + login: 'gSchool', + id: 3484345, + url: 'https://api.github.com/orgs/gSchool', + repos_url: 'https://api.github.com/orgs/gSchool/repos', + events_url: 'https://api.github.com/orgs/gSchool/events', + hooks_url: 'https://api.github.com/orgs/gSchool/hooks', + issues_url: 'https://api.github.com/orgs/gSchool/issues', + members_url: 'https://api.github.com/orgs/gSchool/members{/member}', + public_members_url: 'https://api.github.com/orgs/gSchool/public_members{/member}', + avatar_url: 'https://avatars1.githubusercontent.com/u/3484345?v=4', + description: 'Home of all the Galvanize education repositories', + }, + ]; + nock('https://api.github.com') + .get(`/users/michaelmurray6298/orgs?access_token=${process.env.TKN}`) + .reply(200, orgsFetch); + const allOrgs = await orgs.getAllUserOrgs; + expect(allOrgs[0]).to.be.an.instanceof(Org); + }); + after((done) => { + done(); + }); + + it('should fetch the user orgs', async () => { + const orgFetch = [ + { + login: 'ski-ski', + id: 29638033, + url: 'https://api.github.com/orgs/ski-ski', + repos_url: 'https://api.github.com/orgs/ski-ski/repos', + events_url: 'https://api.github.com/orgs/ski-ski/events', + hooks_url: 'https://api.github.com/orgs/ski-ski/hooks', + issues_url: 'https://api.github.com/orgs/ski-ski/issues', + members_url: 'https://api.github.com/orgs/ski-ski/members{/member}', + public_members_url: 'https://api.github.com/orgs/ski-ski/public_members{/member}', + avatar_url: 'https://avatars3.githubusercontent.com/u/29638033?v=4', + description: null, + has_organization_projects: true, + has_repository_projects: true, + public_repos: 2, + public_gists: 0, + followers: 0, + following: 0, + html_url: 'https://github.com/ski-ski', + created_at: '2017-06-22T18:04:32Z', + updated_at: '2017-06-22T18:05:56Z', + type: 'Organization', + total_private_repos: 0, + owned_private_repos: 0, + private_gists: 0, + disk_usage: 472, + collaborators: 0, + billing_email: 'michaelmurray6298@gmail.com', + plan: { + name: 'free', + space: 976562499, + private_repos: 0, + filled_seats: 2, + seats: 0, + }, + default_repository_permission: 'admin', + members_can_create_repositories: true, + }, + ]; + nock('https://api.github.com') + .get(`/orgs/ski-ski?access_token=${process.env.TKN}`) + .reply(200, orgFetch); + const singleOrg = await org.getOrg; + expect(singleOrg[0]).to.be.an.instanceof(Org); + }); + after((done) => { + done(); + }); +}); diff --git a/test/PullRequest.test.js b/test/PullRequest.test.js new file mode 100644 index 0000000..62e8bc1 --- /dev/null +++ b/test/PullRequest.test.js @@ -0,0 +1,369 @@ +/* eslint-disable no-undef, no-unused-expressions, no-debugger */ +const { expect } = require('chai'); +const PullRequest = require('../src/models/PullRequest'); + +describe('PullRequest model', () => { + const pullRequest = new PullRequest( + { + url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls/4', + id: 133820061, + html_url: 'https://github.com/michaelmurray6298/react-inbox/pull/4', + diff_url: 'https://github.com/michaelmurray6298/react-inbox/pull/4.diff', + patch_url: 'https://github.com/michaelmurray6298/react-inbox/pull/4.patch', + issue_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/4', + number: 4, + state: 'open', + locked: false, + title: 'Redux refactor', + user: { + login: 'michaelmurray6298', + id: 24865792, + avatar_url: 'https://avatars1.githubusercontent.com/u/24865792?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/michaelmurray6298', + html_url: 'https://github.com/michaelmurray6298', + followers_url: 'https://api.github.com/users/michaelmurray6298/followers', + following_url: 'https://api.github.com/users/michaelmurray6298/following{/other_user}', + gists_url: 'https://api.github.com/users/michaelmurray6298/gists{/gist_id}', + starred_url: 'https://api.github.com/users/michaelmurray6298/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/michaelmurray6298/subscriptions', + organizations_url: 'https://api.github.com/users/michaelmurray6298/orgs', + repos_url: 'https://api.github.com/users/michaelmurray6298/repos', + events_url: 'https://api.github.com/users/michaelmurray6298/events{/privacy}', + received_events_url: 'https://api.github.com/users/michaelmurray6298/received_events', + type: 'User', + site_admin: false, + }, + body: '', + created_at: '2017-08-02T22:09:22Z', + updated_at: '2017-08-02T22:09:43Z', + closed_at: null, + merged_at: null, + merge_commit_sha: 'bcaffe28b70421e767b3f20e4c3178283f373cb1', + assignee: null, + assignees: [ + + ], + requested_reviewers: [ + + ], + milestone: { + url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/milestones/1', + html_url: 'https://github.com/michaelmurray6298/react-inbox/milestone/1', + labels_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/milestones/1/labels', + id: 2677830, + number: 1, + title: 'Test', + description: '', + creator: { + login: 'michaelmurray6298', + id: 24865792, + avatar_url: 'https://avatars1.githubusercontent.com/u/24865792?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/michaelmurray6298', + html_url: 'https://github.com/michaelmurray6298', + followers_url: 'https://api.github.com/users/michaelmurray6298/followers', + following_url: 'https://api.github.com/users/michaelmurray6298/following{/other_user}', + gists_url: 'https://api.github.com/users/michaelmurray6298/gists{/gist_id}', + starred_url: 'https://api.github.com/users/michaelmurray6298/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/michaelmurray6298/subscriptions', + organizations_url: 'https://api.github.com/users/michaelmurray6298/orgs', + repos_url: 'https://api.github.com/users/michaelmurray6298/repos', + events_url: 'https://api.github.com/users/michaelmurray6298/events{/privacy}', + received_events_url: 'https://api.github.com/users/michaelmurray6298/received_events', + type: 'User', + site_admin: false, + }, + open_issues: 1, + closed_issues: 1, + state: 'open', + created_at: '2017-08-02T22:09:34Z', + updated_at: '2017-08-02T22:13:26Z', + due_on: '2017-08-20T07:00:00Z', + closed_at: null, + }, + commits_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls/4/commits', + review_comments_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls/4/comments', + review_comment_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls/comments{/number}', + comments_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/4/comments', + statuses_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/statuses/f201c18eb4b44c24c0d8f9590e2fb3ada2f4d73f', + head: { + label: 'michaelmurray6298:redux-refactor', + ref: 'redux-refactor', + sha: 'f201c18eb4b44c24c0d8f9590e2fb3ada2f4d73f', + user: { + login: 'michaelmurray6298', + id: 24865792, + avatar_url: 'https://avatars1.githubusercontent.com/u/24865792?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/michaelmurray6298', + html_url: 'https://github.com/michaelmurray6298', + followers_url: 'https://api.github.com/users/michaelmurray6298/followers', + following_url: 'https://api.github.com/users/michaelmurray6298/following{/other_user}', + gists_url: 'https://api.github.com/users/michaelmurray6298/gists{/gist_id}', + starred_url: 'https://api.github.com/users/michaelmurray6298/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/michaelmurray6298/subscriptions', + organizations_url: 'https://api.github.com/users/michaelmurray6298/orgs', + repos_url: 'https://api.github.com/users/michaelmurray6298/repos', + events_url: 'https://api.github.com/users/michaelmurray6298/events{/privacy}', + received_events_url: 'https://api.github.com/users/michaelmurray6298/received_events', + type: 'User', + site_admin: false, + }, + repo: { + id: 97292532, + name: 'react-inbox', + full_name: 'michaelmurray6298/react-inbox', + owner: { + login: 'michaelmurray6298', + id: 24865792, + avatar_url: 'https://avatars1.githubusercontent.com/u/24865792?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/michaelmurray6298', + html_url: 'https://github.com/michaelmurray6298', + followers_url: 'https://api.github.com/users/michaelmurray6298/followers', + following_url: 'https://api.github.com/users/michaelmurray6298/following{/other_user}', + gists_url: 'https://api.github.com/users/michaelmurray6298/gists{/gist_id}', + starred_url: 'https://api.github.com/users/michaelmurray6298/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/michaelmurray6298/subscriptions', + organizations_url: 'https://api.github.com/users/michaelmurray6298/orgs', + repos_url: 'https://api.github.com/users/michaelmurray6298/repos', + events_url: 'https://api.github.com/users/michaelmurray6298/events{/privacy}', + received_events_url: 'https://api.github.com/users/michaelmurray6298/received_events', + type: 'User', + site_admin: false, + }, + private: false, + html_url: 'https://github.com/michaelmurray6298/react-inbox', + description: null, + fork: false, + url: 'https://api.github.com/repos/michaelmurray6298/react-inbox', + forks_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/forks', + keys_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/keys{/key_id}', + collaborators_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/collaborators{/collaborator}', + teams_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/teams', + hooks_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/hooks', + issue_events_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/events{/number}', + events_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/events', + assignees_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/assignees{/user}', + branches_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/branches{/branch}', + tags_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/tags', + blobs_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/blobs{/sha}', + git_tags_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/tags{/sha}', + git_refs_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/refs{/sha}', + trees_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/trees{/sha}', + statuses_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/statuses/{sha}', + languages_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/languages', + stargazers_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/stargazers', + contributors_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/contributors', + subscribers_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/subscribers', + subscription_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/subscription', + commits_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/commits{/sha}', + git_commits_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/commits{/sha}', + comments_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/comments{/number}', + issue_comment_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/comments{/number}', + contents_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/contents/{+path}', + compare_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/compare/{base}...{head}', + merges_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/merges', + archive_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/{archive_format}{/ref}', + downloads_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/downloads', + issues_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues{/number}', + pulls_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls{/number}', + milestones_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/milestones{/number}', + notifications_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/notifications{?since,all,participating}', + labels_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/labels{/name}', + releases_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/releases{/id}', + deployments_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/deployments', + created_at: '2017-07-15T04:40:38Z', + updated_at: '2017-07-17T23:57:59Z', + pushed_at: '2017-08-02T22:09:22Z', + git_url: 'git://github.com/michaelmurray6298/react-inbox.git', + ssh_url: 'git@github.com:michaelmurray6298/react-inbox.git', + clone_url: 'https://github.com/michaelmurray6298/react-inbox.git', + svn_url: 'https://github.com/michaelmurray6298/react-inbox', + homepage: null, + size: 229, + stargazers_count: 0, + watchers_count: 0, + language: 'JavaScript', + has_issues: true, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + forks_count: 0, + mirror_url: null, + open_issues_count: 2, + forks: 0, + open_issues: 2, + watchers: 0, + default_branch: 'master', + }, + }, + base: { + label: 'michaelmurray6298:master', + ref: 'master', + sha: 'd4d1dc5992fe50d0d292be175505f4ab5e187f2c', + user: { + login: 'michaelmurray6298', + id: 24865792, + avatar_url: 'https://avatars1.githubusercontent.com/u/24865792?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/michaelmurray6298', + html_url: 'https://github.com/michaelmurray6298', + followers_url: 'https://api.github.com/users/michaelmurray6298/followers', + following_url: 'https://api.github.com/users/michaelmurray6298/following{/other_user}', + gists_url: 'https://api.github.com/users/michaelmurray6298/gists{/gist_id}', + starred_url: 'https://api.github.com/users/michaelmurray6298/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/michaelmurray6298/subscriptions', + organizations_url: 'https://api.github.com/users/michaelmurray6298/orgs', + repos_url: 'https://api.github.com/users/michaelmurray6298/repos', + events_url: 'https://api.github.com/users/michaelmurray6298/events{/privacy}', + received_events_url: 'https://api.github.com/users/michaelmurray6298/received_events', + type: 'User', + site_admin: false, + }, + repo: { + id: 97292532, + name: 'react-inbox', + full_name: 'michaelmurray6298/react-inbox', + owner: { + login: 'michaelmurray6298', + id: 24865792, + avatar_url: 'https://avatars1.githubusercontent.com/u/24865792?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/michaelmurray6298', + html_url: 'https://github.com/michaelmurray6298', + followers_url: 'https://api.github.com/users/michaelmurray6298/followers', + following_url: 'https://api.github.com/users/michaelmurray6298/following{/other_user}', + gists_url: 'https://api.github.com/users/michaelmurray6298/gists{/gist_id}', + starred_url: 'https://api.github.com/users/michaelmurray6298/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/michaelmurray6298/subscriptions', + organizations_url: 'https://api.github.com/users/michaelmurray6298/orgs', + repos_url: 'https://api.github.com/users/michaelmurray6298/repos', + events_url: 'https://api.github.com/users/michaelmurray6298/events{/privacy}', + received_events_url: 'https://api.github.com/users/michaelmurray6298/received_events', + type: 'User', + site_admin: false, + }, + private: false, + html_url: 'https://github.com/michaelmurray6298/react-inbox', + description: null, + fork: false, + url: 'https://api.github.com/repos/michaelmurray6298/react-inbox', + forks_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/forks', + keys_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/keys{/key_id}', + collaborators_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/collaborators{/collaborator}', + teams_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/teams', + hooks_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/hooks', + issue_events_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/events{/number}', + events_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/events', + assignees_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/assignees{/user}', + branches_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/branches{/branch}', + tags_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/tags', + blobs_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/blobs{/sha}', + git_tags_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/tags{/sha}', + git_refs_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/refs{/sha}', + trees_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/trees{/sha}', + statuses_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/statuses/{sha}', + languages_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/languages', + stargazers_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/stargazers', + contributors_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/contributors', + subscribers_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/subscribers', + subscription_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/subscription', + commits_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/commits{/sha}', + git_commits_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/commits{/sha}', + comments_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/comments{/number}', + issue_comment_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/comments{/number}', + contents_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/contents/{+path}', + compare_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/compare/{base}...{head}', + merges_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/merges', + archive_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/{archive_format}{/ref}', + downloads_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/downloads', + issues_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues{/number}', + pulls_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls{/number}', + milestones_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/milestones{/number}', + notifications_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/notifications{?since,all,participating}', + labels_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/labels{/name}', + releases_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/releases{/id}', + deployments_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/deployments', + created_at: '2017-07-15T04:40:38Z', + updated_at: '2017-07-17T23:57:59Z', + pushed_at: '2017-08-02T22:09:22Z', + git_url: 'git://github.com/michaelmurray6298/react-inbox.git', + ssh_url: 'git@github.com:michaelmurray6298/react-inbox.git', + clone_url: 'https://github.com/michaelmurray6298/react-inbox.git', + svn_url: 'https://github.com/michaelmurray6298/react-inbox', + homepage: null, + size: 229, + stargazers_count: 0, + watchers_count: 0, + language: 'JavaScript', + has_issues: true, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + forks_count: 0, + mirror_url: null, + open_issues_count: 2, + forks: 0, + open_issues: 2, + watchers: 0, + default_branch: 'master', + }, + }, + _links: { + self: { + href: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls/4', + }, + html: { + href: 'https://github.com/michaelmurray6298/react-inbox/pull/4', + }, + issue: { + href: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/4', + }, + comments: { + href: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/4/comments', + }, + review_comments: { + href: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls/4/comments', + }, + review_comment: { + href: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls/comments{/number}', + }, + commits: { + href: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls/4/commits', + }, + statuses: { + href: 'https://api.github.com/repos/michaelmurray6298/react-inbox/statuses/f201c18eb4b44c24c0d8f9590e2fb3ada2f4d73f', + }, + }, + merged: false, + mergeable: true, + rebaseable: true, + mergeable_state: 'clean', + merged_by: null, + comments: 0, + review_comments: 0, + maintainer_can_modify: false, + commits: 4, + additions: 1354, + deletions: 578, + changed_files: 18, + }, + ); + + it('accepts id, number, title, submitted by, created at, and mergeable as passed in arguments', () => { + expect(pullRequest.id).to.equal(133820061); + expect(pullRequest.number).to.equal(4); + expect(pullRequest.title).to.equal('Redux refactor'); + debugger; + expect(pullRequest.submittedBy).to.equal('michaelmurray6298'); + expect(pullRequest.createdAt).to.equal('2017-08-02T22:09:22Z'); + expect(pullRequest.mergeable).to.equal(true); + }); + after((done) => { + done(); + }); +}); diff --git a/test/Repo.test.js b/test/Repo.test.js new file mode 100644 index 0000000..ae0e45a --- /dev/null +++ b/test/Repo.test.js @@ -0,0 +1,151 @@ +/* eslint-disable no-undef, no-unused-expressions */ +const { expect } = require('chai'); +require('dotenv').config(); +const nock = require('nock'); +const { issuesFetch, pullRequestsFetch, repoPR, milestonesFetch } = require('./RepoMock'); +const Repo = require('../src/models/Repo'); +const Issue = require('../src/models/Issue'); +const PullRequest = require('../src/models/PullRequest'); +const Milestone = require('../src/models/Milestone'); + +describe('Repo model', () => { + const repo = new Repo({ + id: 97292532, + name: 'react-inbox', + full_name: 'michaelmurray6298/react-inbox', + owner: { + login: 'michaelmurray6298', + id: 24865792, + avatar_url: 'https://avatars1.githubusercontent.com/u/24865792?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/michaelmurray6298', + html_url: 'https://github.com/michaelmurray6298', + followers_url: 'https://api.github.com/users/michaelmurray6298/followers', + following_url: 'https://api.github.com/users/michaelmurray6298/following{/other_user}', + gists_url: 'https://api.github.com/users/michaelmurray6298/gists{/gist_id}', + starred_url: 'https://api.github.com/users/michaelmurray6298/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/michaelmurray6298/subscriptions', + organizations_url: 'https://api.github.com/users/michaelmurray6298/orgs', + repos_url: 'https://api.github.com/users/michaelmurray6298/repos', + events_url: 'https://api.github.com/users/michaelmurray6298/events{/privacy}', + received_events_url: 'https://api.github.com/users/michaelmurray6298/received_events', + type: 'User', + site_admin: false, + }, + private: false, + html_url: 'https://github.com/michaelmurray6298/react-inbox', + description: null, + fork: false, + url: 'https://api.github.com/repos/michaelmurray6298/react-inbox', + forks_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/forks', + keys_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/keys{/key_id}', + collaborators_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/collaborators{/collaborator}', + teams_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/teams', + hooks_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/hooks', + issue_events_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/events{/number}', + events_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/events', + assignees_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/assignees{/user}', + branches_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/branches{/branch}', + tags_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/tags', + blobs_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/blobs{/sha}', + git_tags_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/tags{/sha}', + git_refs_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/refs{/sha}', + trees_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/trees{/sha}', + statuses_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/statuses/{sha}', + languages_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/languages', + stargazers_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/stargazers', + contributors_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/contributors', + subscribers_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/subscribers', + subscription_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/subscription', + commits_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/commits{/sha}', + git_commits_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/commits{/sha}', + comments_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/comments{/number}', + issue_comment_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/comments{/number}', + contents_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/contents/{+path}', + compare_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/compare/{base}...{head}', + merges_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/merges', + archive_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/{archive_format}{/ref}', + downloads_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/downloads', + issues_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues{/number}', + pulls_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls{/number}', + milestones_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/milestones{/number}', + notifications_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/notifications{?since,all,participating}', + labels_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/labels{/name}', + releases_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/releases{/id}', + deployments_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/deployments', + created_at: '2017-07-15T04:40:38Z', + updated_at: '2017-07-17T23:57:59Z', + pushed_at: '2017-08-02T22:09:22Z', + git_url: 'git://github.com/michaelmurray6298/react-inbox.git', + ssh_url: 'git@github.com:michaelmurray6298/react-inbox.git', + clone_url: 'https://github.com/michaelmurray6298/react-inbox.git', + svn_url: 'https://github.com/michaelmurray6298/react-inbox', + homepage: null, + size: 229, + stargazers_count: 0, + watchers_count: 0, + language: 'JavaScript', + has_issues: true, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + forks_count: 0, + mirror_url: null, + open_issues_count: 2, + forks: 0, + open_issues: 2, + watchers: 0, + default_branch: 'master', + network_count: 0, + subscribers_count: 0, + }); + + it('accepts id, name, open issues, issues url, pull requests url, and milestones url as passed in arguments', () => { + expect(repo.id).to.equal(97292532); + expect(repo.name).to.equal('react-inbox'); + expect(repo.openIssues).to.equal(2); + expect(repo.issuesUrl).to.equal('https://api.github.com/repos/michaelmurray6298/react-inbox/issues{/number}'); + expect(repo.pullRequestUrl).to.equal('https://api.github.com/repos/michaelmurray6298/react-inbox/pulls{/number}'); + expect(repo.milestonesUrl).to.equal('https://api.github.com/repos/michaelmurray6298/react-inbox/milestones{/number}'); + }); + after((done) => { + done(); + }); + + it('should fetch the repo issues', async () => { + nock('https://api.github.com') + .get(`/repos/michaelmurray6298/react-inbox/issues?state=all&access_token=${process.env.TKN}`) + .reply(200, issuesFetch); + const repoIssue = await repo.issues; + expect(repoIssue[0]).to.be.an.instanceof(Issue); + }); + after((done) => { + done(); + }); + + it('should fetch the repo pull requests', async () => { + nock('https://api.github.com') + .get(`/repos/michaelmurray6298/react-inbox/pulls?access_token=${process.env.TKN}`) + .reply(200, pullRequestsFetch); + nock('https://api.github.com') + .get(`/repos/michaelmurray6298/react-inbox/pulls/4?access_token=${process.env.TKN}`) + .reply(200, repoPR); + const repoPullRequests = await repo.pullRequests; + expect(repoPullRequests[0]).to.be.an.instanceof(PullRequest); + }); + after((done) => { + done(); + }); + + it('should fetch the repo milestones', async () => { + nock('https://api.github.com') + .get(`/repos/michaelmurray6298/react-inbox/milestones?access_token=${process.env.TKN}`) + .reply(200, milestonesFetch); + const repoMilestones = await repo.milestones; + expect(repoMilestones[0]).to.be.an.instanceof(Milestone); + }); + after((done) => { + done(); + }); +}); diff --git a/test/RepoMock.js b/test/RepoMock.js new file mode 100644 index 0000000..d9464e0 --- /dev/null +++ b/test/RepoMock.js @@ -0,0 +1,1046 @@ +const issuesFetch = [ + { + url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/5', + repository_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox', + labels_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/5/labels{/name}', + comments_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/5/comments', + events_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/5/events', + html_url: 'https://github.com/michaelmurray6298/react-inbox/issues/5', + id: 247537446, + number: 5, + title: 'Test', + user: { + login: 'michaelmurray6298', + id: 24865792, + avatar_url: 'https://avatars1.githubusercontent.com/u/24865792?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/michaelmurray6298', + html_url: 'https://github.com/michaelmurray6298', + followers_url: 'https://api.github.com/users/michaelmurray6298/followers', + following_url: 'https://api.github.com/users/michaelmurray6298/following{/other_user}', + gists_url: 'https://api.github.com/users/michaelmurray6298/gists{/gist_id}', + starred_url: 'https://api.github.com/users/michaelmurray6298/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/michaelmurray6298/subscriptions', + organizations_url: 'https://api.github.com/users/michaelmurray6298/orgs', + repos_url: 'https://api.github.com/users/michaelmurray6298/repos', + events_url: 'https://api.github.com/users/michaelmurray6298/events{/privacy}', + received_events_url: 'https://api.github.com/users/michaelmurray6298/received_events', + type: 'User', + site_admin: false, + }, + labels: [ + + ], + state: 'closed', + locked: false, + assignee: null, + assignees: [ + + ], + milestone: { + url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/milestones/1', + html_url: 'https://github.com/michaelmurray6298/react-inbox/milestone/1', + labels_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/milestones/1/labels', + id: 2677830, + number: 1, + title: 'Test', + description: '', + creator: { + login: 'michaelmurray6298', + id: 24865792, + avatar_url: 'https://avatars1.githubusercontent.com/u/24865792?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/michaelmurray6298', + html_url: 'https://github.com/michaelmurray6298', + followers_url: 'https://api.github.com/users/michaelmurray6298/followers', + following_url: 'https://api.github.com/users/michaelmurray6298/following{/other_user}', + gists_url: 'https://api.github.com/users/michaelmurray6298/gists{/gist_id}', + starred_url: 'https://api.github.com/users/michaelmurray6298/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/michaelmurray6298/subscriptions', + organizations_url: 'https://api.github.com/users/michaelmurray6298/orgs', + repos_url: 'https://api.github.com/users/michaelmurray6298/repos', + events_url: 'https://api.github.com/users/michaelmurray6298/events{/privacy}', + received_events_url: 'https://api.github.com/users/michaelmurray6298/received_events', + type: 'User', + site_admin: false, + }, + open_issues: 1, + closed_issues: 1, + state: 'open', + created_at: '2017-08-02T22:09:34Z', + updated_at: '2017-08-02T22:13:26Z', + due_on: '2017-08-20T07:00:00Z', + closed_at: null, + }, + comments: 0, + created_at: '2017-08-02T22:09:55Z', + updated_at: '2017-08-02T22:13:10Z', + closed_at: '2017-08-02T22:11:40Z', + body: '', + }, + { + url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/4', + repository_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox', + labels_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/4/labels{/name}', + comments_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/4/comments', + events_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/4/events', + html_url: 'https://github.com/michaelmurray6298/react-inbox/pull/4', + id: 247537333, + number: 4, + title: 'Redux refactor', + user: { + login: 'michaelmurray6298', + id: 24865792, + avatar_url: 'https://avatars1.githubusercontent.com/u/24865792?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/michaelmurray6298', + html_url: 'https://github.com/michaelmurray6298', + followers_url: 'https://api.github.com/users/michaelmurray6298/followers', + following_url: 'https://api.github.com/users/michaelmurray6298/following{/other_user}', + gists_url: 'https://api.github.com/users/michaelmurray6298/gists{/gist_id}', + starred_url: 'https://api.github.com/users/michaelmurray6298/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/michaelmurray6298/subscriptions', + organizations_url: 'https://api.github.com/users/michaelmurray6298/orgs', + repos_url: 'https://api.github.com/users/michaelmurray6298/repos', + events_url: 'https://api.github.com/users/michaelmurray6298/events{/privacy}', + received_events_url: 'https://api.github.com/users/michaelmurray6298/received_events', + type: 'User', + site_admin: false, + }, + labels: [ + + ], + state: 'open', + locked: false, + assignee: null, + assignees: [ + + ], + milestone: { + url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/milestones/1', + html_url: 'https://github.com/michaelmurray6298/react-inbox/milestone/1', + labels_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/milestones/1/labels', + id: 2677830, + number: 1, + title: 'Test', + description: '', + creator: { + login: 'michaelmurray6298', + id: 24865792, + avatar_url: 'https://avatars1.githubusercontent.com/u/24865792?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/michaelmurray6298', + html_url: 'https://github.com/michaelmurray6298', + followers_url: 'https://api.github.com/users/michaelmurray6298/followers', + following_url: 'https://api.github.com/users/michaelmurray6298/following{/other_user}', + gists_url: 'https://api.github.com/users/michaelmurray6298/gists{/gist_id}', + starred_url: 'https://api.github.com/users/michaelmurray6298/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/michaelmurray6298/subscriptions', + organizations_url: 'https://api.github.com/users/michaelmurray6298/orgs', + repos_url: 'https://api.github.com/users/michaelmurray6298/repos', + events_url: 'https://api.github.com/users/michaelmurray6298/events{/privacy}', + received_events_url: 'https://api.github.com/users/michaelmurray6298/received_events', + type: 'User', + site_admin: false, + }, + open_issues: 1, + closed_issues: 1, + state: 'open', + created_at: '2017-08-02T22:09:34Z', + updated_at: '2017-08-02T22:13:26Z', + due_on: '2017-08-20T07:00:00Z', + closed_at: null, + }, + comments: 0, + created_at: '2017-08-02T22:09:22Z', + updated_at: '2017-08-02T22:09:43Z', + closed_at: null, + pull_request: { + url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls/4', + html_url: 'https://github.com/michaelmurray6298/react-inbox/pull/4', + diff_url: 'https://github.com/michaelmurray6298/react-inbox/pull/4.diff', + patch_url: 'https://github.com/michaelmurray6298/react-inbox/pull/4.patch', + }, + body: '', + }, + { + url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/3', + repository_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox', + labels_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/3/labels{/name}', + comments_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/3/comments', + events_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/3/events', + html_url: 'https://github.com/michaelmurray6298/react-inbox/pull/3', + id: 246918746, + number: 3, + title: 'Phase 4 5 6', + user: { + login: 'ronanfitz', + id: 19772513, + avatar_url: 'https://avatars1.githubusercontent.com/u/19772513?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/ronanfitz', + html_url: 'https://github.com/ronanfitz', + followers_url: 'https://api.github.com/users/ronanfitz/followers', + following_url: 'https://api.github.com/users/ronanfitz/following{/other_user}', + gists_url: 'https://api.github.com/users/ronanfitz/gists{/gist_id}', + starred_url: 'https://api.github.com/users/ronanfitz/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/ronanfitz/subscriptions', + organizations_url: 'https://api.github.com/users/ronanfitz/orgs', + repos_url: 'https://api.github.com/users/ronanfitz/repos', + events_url: 'https://api.github.com/users/ronanfitz/events{/privacy}', + received_events_url: 'https://api.github.com/users/ronanfitz/received_events', + type: 'User', + site_admin: false, + }, + labels: [ + + ], + state: 'open', + locked: false, + assignee: null, + assignees: [ + + ], + milestone: null, + comments: 0, + created_at: '2017-08-01T00:03:59Z', + updated_at: '2017-08-01T00:03:59Z', + closed_at: null, + pull_request: { + url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls/3', + html_url: 'https://github.com/michaelmurray6298/react-inbox/pull/3', + diff_url: 'https://github.com/michaelmurray6298/react-inbox/pull/3.diff', + patch_url: 'https://github.com/michaelmurray6298/react-inbox/pull/3.patch', + }, + body: '', + }, + { + url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/2', + repository_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox', + labels_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/2/labels{/name}', + comments_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/2/comments', + events_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/2/events', + html_url: 'https://github.com/michaelmurray6298/react-inbox/issues/2', + id: 246127720, + number: 2, + title: 'Test', + user: { + login: 'michaelmurray6298', + id: 24865792, + avatar_url: 'https://avatars1.githubusercontent.com/u/24865792?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/michaelmurray6298', + html_url: 'https://github.com/michaelmurray6298', + followers_url: 'https://api.github.com/users/michaelmurray6298/followers', + following_url: 'https://api.github.com/users/michaelmurray6298/following{/other_user}', + gists_url: 'https://api.github.com/users/michaelmurray6298/gists{/gist_id}', + starred_url: 'https://api.github.com/users/michaelmurray6298/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/michaelmurray6298/subscriptions', + organizations_url: 'https://api.github.com/users/michaelmurray6298/orgs', + repos_url: 'https://api.github.com/users/michaelmurray6298/repos', + events_url: 'https://api.github.com/users/michaelmurray6298/events{/privacy}', + received_events_url: 'https://api.github.com/users/michaelmurray6298/received_events', + type: 'User', + site_admin: false, + }, + labels: [ + + ], + state: 'closed', + locked: false, + assignee: null, + assignees: [ + + ], + milestone: null, + comments: 0, + created_at: '2017-07-27T18:23:34Z', + updated_at: '2017-08-02T22:15:24Z', + closed_at: '2017-07-27T19:12:54Z', + body: 'Test', + }, + { + url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/1', + repository_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox', + labels_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/1/labels{/name}', + comments_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/1/comments', + events_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/1/events', + html_url: 'https://github.com/michaelmurray6298/react-inbox/pull/1', + id: 243562492, + number: 1, + title: 'fix git issue.', + user: { + login: 'danielmarcgardner', + id: 22782154, + avatar_url: 'https://avatars1.githubusercontent.com/u/22782154?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/danielmarcgardner', + html_url: 'https://github.com/danielmarcgardner', + followers_url: 'https://api.github.com/users/danielmarcgardner/followers', + following_url: 'https://api.github.com/users/danielmarcgardner/following{/other_user}', + gists_url: 'https://api.github.com/users/danielmarcgardner/gists{/gist_id}', + starred_url: 'https://api.github.com/users/danielmarcgardner/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/danielmarcgardner/subscriptions', + organizations_url: 'https://api.github.com/users/danielmarcgardner/orgs', + repos_url: 'https://api.github.com/users/danielmarcgardner/repos', + events_url: 'https://api.github.com/users/danielmarcgardner/events{/privacy}', + received_events_url: 'https://api.github.com/users/danielmarcgardner/received_events', + type: 'User', + site_admin: false, + }, + labels: [ + + ], + state: 'closed', + locked: false, + assignee: null, + assignees: [ + + ], + milestone: null, + comments: 0, + created_at: '2017-07-18T00:02:58Z', + updated_at: '2017-07-18T18:49:14Z', + closed_at: '2017-07-18T18:49:14Z', + pull_request: { + url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls/1', + html_url: 'https://github.com/michaelmurray6298/react-inbox/pull/1', + diff_url: 'https://github.com/michaelmurray6298/react-inbox/pull/1.diff', + patch_url: 'https://github.com/michaelmurray6298/react-inbox/pull/1.patch', + }, + body: '', + }, +]; + +const pullRequestsFetch = [ + { + url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls/4', + id: 133820061, + html_url: 'https://github.com/michaelmurray6298/react-inbox/pull/4', + diff_url: 'https://github.com/michaelmurray6298/react-inbox/pull/4.diff', + patch_url: 'https://github.com/michaelmurray6298/react-inbox/pull/4.patch', + issue_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/4', + number: 4, + state: 'open', + locked: false, + title: 'Redux refactor', + user: { + login: 'michaelmurray6298', + id: 24865792, + avatar_url: 'https://avatars1.githubusercontent.com/u/24865792?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/michaelmurray6298', + html_url: 'https://github.com/michaelmurray6298', + followers_url: 'https://api.github.com/users/michaelmurray6298/followers', + following_url: 'https://api.github.com/users/michaelmurray6298/following{/other_user}', + gists_url: 'https://api.github.com/users/michaelmurray6298/gists{/gist_id}', + starred_url: 'https://api.github.com/users/michaelmurray6298/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/michaelmurray6298/subscriptions', + organizations_url: 'https://api.github.com/users/michaelmurray6298/orgs', + repos_url: 'https://api.github.com/users/michaelmurray6298/repos', + events_url: 'https://api.github.com/users/michaelmurray6298/events{/privacy}', + received_events_url: 'https://api.github.com/users/michaelmurray6298/received_events', + type: 'User', + site_admin: false, + }, + body: '', + created_at: '2017-08-02T22:09:22Z', + updated_at: '2017-08-02T22:09:43Z', + closed_at: null, + merged_at: null, + merge_commit_sha: 'bcaffe28b70421e767b3f20e4c3178283f373cb1', + assignee: null, + assignees: [ + + ], + requested_reviewers: [ + + ], + milestone: { + url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/milestones/1', + html_url: 'https://github.com/michaelmurray6298/react-inbox/milestone/1', + labels_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/milestones/1/labels', + id: 2677830, + number: 1, + title: 'Test', + description: '', + creator: { + login: 'michaelmurray6298', + id: 24865792, + avatar_url: 'https://avatars1.githubusercontent.com/u/24865792?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/michaelmurray6298', + html_url: 'https://github.com/michaelmurray6298', + followers_url: 'https://api.github.com/users/michaelmurray6298/followers', + following_url: 'https://api.github.com/users/michaelmurray6298/following{/other_user}', + gists_url: 'https://api.github.com/users/michaelmurray6298/gists{/gist_id}', + starred_url: 'https://api.github.com/users/michaelmurray6298/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/michaelmurray6298/subscriptions', + organizations_url: 'https://api.github.com/users/michaelmurray6298/orgs', + repos_url: 'https://api.github.com/users/michaelmurray6298/repos', + events_url: 'https://api.github.com/users/michaelmurray6298/events{/privacy}', + received_events_url: 'https://api.github.com/users/michaelmurray6298/received_events', + type: 'User', + site_admin: false, + }, + open_issues: 1, + closed_issues: 1, + state: 'open', + created_at: '2017-08-02T22:09:34Z', + updated_at: '2017-08-02T22:13:26Z', + due_on: '2017-08-20T07:00:00Z', + closed_at: null, + }, + commits_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls/4/commits', + review_comments_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls/4/comments', + review_comment_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls/comments{/number}', + comments_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/4/comments', + statuses_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/statuses/f201c18eb4b44c24c0d8f9590e2fb3ada2f4d73f', + head: { + label: 'michaelmurray6298:redux-refactor', + ref: 'redux-refactor', + sha: 'f201c18eb4b44c24c0d8f9590e2fb3ada2f4d73f', + user: { + login: 'michaelmurray6298', + id: 24865792, + avatar_url: 'https://avatars1.githubusercontent.com/u/24865792?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/michaelmurray6298', + html_url: 'https://github.com/michaelmurray6298', + followers_url: 'https://api.github.com/users/michaelmurray6298/followers', + following_url: 'https://api.github.com/users/michaelmurray6298/following{/other_user}', + gists_url: 'https://api.github.com/users/michaelmurray6298/gists{/gist_id}', + starred_url: 'https://api.github.com/users/michaelmurray6298/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/michaelmurray6298/subscriptions', + organizations_url: 'https://api.github.com/users/michaelmurray6298/orgs', + repos_url: 'https://api.github.com/users/michaelmurray6298/repos', + events_url: 'https://api.github.com/users/michaelmurray6298/events{/privacy}', + received_events_url: 'https://api.github.com/users/michaelmurray6298/received_events', + type: 'User', + site_admin: false, + }, + repo: { + id: 97292532, + name: 'react-inbox', + full_name: 'michaelmurray6298/react-inbox', + owner: { + login: 'michaelmurray6298', + id: 24865792, + avatar_url: 'https://avatars1.githubusercontent.com/u/24865792?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/michaelmurray6298', + html_url: 'https://github.com/michaelmurray6298', + followers_url: 'https://api.github.com/users/michaelmurray6298/followers', + following_url: 'https://api.github.com/users/michaelmurray6298/following{/other_user}', + gists_url: 'https://api.github.com/users/michaelmurray6298/gists{/gist_id}', + starred_url: 'https://api.github.com/users/michaelmurray6298/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/michaelmurray6298/subscriptions', + organizations_url: 'https://api.github.com/users/michaelmurray6298/orgs', + repos_url: 'https://api.github.com/users/michaelmurray6298/repos', + events_url: 'https://api.github.com/users/michaelmurray6298/events{/privacy}', + received_events_url: 'https://api.github.com/users/michaelmurray6298/received_events', + type: 'User', + site_admin: false, + }, + private: false, + html_url: 'https://github.com/michaelmurray6298/react-inbox', + description: null, + fork: false, + url: 'https://api.github.com/repos/michaelmurray6298/react-inbox', + forks_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/forks', + keys_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/keys{/key_id}', + collaborators_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/collaborators{/collaborator}', + teams_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/teams', + hooks_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/hooks', + issue_events_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/events{/number}', + events_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/events', + assignees_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/assignees{/user}', + branches_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/branches{/branch}', + tags_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/tags', + blobs_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/blobs{/sha}', + git_tags_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/tags{/sha}', + git_refs_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/refs{/sha}', + trees_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/trees{/sha}', + statuses_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/statuses/{sha}', + languages_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/languages', + stargazers_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/stargazers', + contributors_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/contributors', + subscribers_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/subscribers', + subscription_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/subscription', + commits_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/commits{/sha}', + git_commits_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/commits{/sha}', + comments_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/comments{/number}', + issue_comment_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/comments{/number}', + contents_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/contents/{+path}', + compare_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/compare/{base}...{head}', + merges_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/merges', + archive_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/{archive_format}{/ref}', + downloads_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/downloads', + issues_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues{/number}', + pulls_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls{/number}', + milestones_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/milestones{/number}', + notifications_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/notifications{?since,all,participating}', + labels_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/labels{/name}', + releases_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/releases{/id}', + deployments_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/deployments', + created_at: '2017-07-15T04:40:38Z', + updated_at: '2017-07-17T23:57:59Z', + pushed_at: '2017-08-02T22:09:22Z', + git_url: 'git://github.com/michaelmurray6298/react-inbox.git', + ssh_url: 'git@github.com:michaelmurray6298/react-inbox.git', + clone_url: 'https://github.com/michaelmurray6298/react-inbox.git', + svn_url: 'https://github.com/michaelmurray6298/react-inbox', + homepage: null, + size: 229, + stargazers_count: 0, + watchers_count: 0, + language: 'JavaScript', + has_issues: true, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + forks_count: 0, + mirror_url: null, + open_issues_count: 2, + forks: 0, + open_issues: 2, + watchers: 0, + default_branch: 'master', + }, + }, + base: { + label: 'michaelmurray6298:master', + ref: 'master', + sha: 'd4d1dc5992fe50d0d292be175505f4ab5e187f2c', + user: { + login: 'michaelmurray6298', + id: 24865792, + avatar_url: 'https://avatars1.githubusercontent.com/u/24865792?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/michaelmurray6298', + html_url: 'https://github.com/michaelmurray6298', + followers_url: 'https://api.github.com/users/michaelmurray6298/followers', + following_url: 'https://api.github.com/users/michaelmurray6298/following{/other_user}', + gists_url: 'https://api.github.com/users/michaelmurray6298/gists{/gist_id}', + starred_url: 'https://api.github.com/users/michaelmurray6298/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/michaelmurray6298/subscriptions', + organizations_url: 'https://api.github.com/users/michaelmurray6298/orgs', + repos_url: 'https://api.github.com/users/michaelmurray6298/repos', + events_url: 'https://api.github.com/users/michaelmurray6298/events{/privacy}', + received_events_url: 'https://api.github.com/users/michaelmurray6298/received_events', + type: 'User', + site_admin: false, + }, + repo: { + id: 97292532, + name: 'react-inbox', + full_name: 'michaelmurray6298/react-inbox', + owner: { + login: 'michaelmurray6298', + id: 24865792, + avatar_url: 'https://avatars1.githubusercontent.com/u/24865792?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/michaelmurray6298', + html_url: 'https://github.com/michaelmurray6298', + followers_url: 'https://api.github.com/users/michaelmurray6298/followers', + following_url: 'https://api.github.com/users/michaelmurray6298/following{/other_user}', + gists_url: 'https://api.github.com/users/michaelmurray6298/gists{/gist_id}', + starred_url: 'https://api.github.com/users/michaelmurray6298/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/michaelmurray6298/subscriptions', + organizations_url: 'https://api.github.com/users/michaelmurray6298/orgs', + repos_url: 'https://api.github.com/users/michaelmurray6298/repos', + events_url: 'https://api.github.com/users/michaelmurray6298/events{/privacy}', + received_events_url: 'https://api.github.com/users/michaelmurray6298/received_events', + type: 'User', + site_admin: false, + }, + private: false, + html_url: 'https://github.com/michaelmurray6298/react-inbox', + description: null, + fork: false, + url: 'https://api.github.com/repos/michaelmurray6298/react-inbox', + forks_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/forks', + keys_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/keys{/key_id}', + collaborators_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/collaborators{/collaborator}', + teams_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/teams', + hooks_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/hooks', + issue_events_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/events{/number}', + events_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/events', + assignees_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/assignees{/user}', + branches_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/branches{/branch}', + tags_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/tags', + blobs_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/blobs{/sha}', + git_tags_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/tags{/sha}', + git_refs_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/refs{/sha}', + trees_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/trees{/sha}', + statuses_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/statuses/{sha}', + languages_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/languages', + stargazers_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/stargazers', + contributors_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/contributors', + subscribers_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/subscribers', + subscription_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/subscription', + commits_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/commits{/sha}', + git_commits_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/commits{/sha}', + comments_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/comments{/number}', + issue_comment_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/comments{/number}', + contents_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/contents/{+path}', + compare_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/compare/{base}...{head}', + merges_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/merges', + archive_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/{archive_format}{/ref}', + downloads_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/downloads', + issues_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues{/number}', + pulls_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls{/number}', + milestones_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/milestones{/number}', + notifications_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/notifications{?since,all,participating}', + labels_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/labels{/name}', + releases_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/releases{/id}', + deployments_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/deployments', + created_at: '2017-07-15T04:40:38Z', + updated_at: '2017-07-17T23:57:59Z', + pushed_at: '2017-08-02T22:09:22Z', + git_url: 'git://github.com/michaelmurray6298/react-inbox.git', + ssh_url: 'git@github.com:michaelmurray6298/react-inbox.git', + clone_url: 'https://github.com/michaelmurray6298/react-inbox.git', + svn_url: 'https://github.com/michaelmurray6298/react-inbox', + homepage: null, + size: 229, + stargazers_count: 0, + watchers_count: 0, + language: 'JavaScript', + has_issues: true, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + forks_count: 0, + mirror_url: null, + open_issues_count: 2, + forks: 0, + open_issues: 2, + watchers: 0, + default_branch: 'master', + }, + }, + _links: { + self: { + href: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls/4', + }, + html: { + href: 'https://github.com/michaelmurray6298/react-inbox/pull/4', + }, + issue: { + href: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/4', + }, + comments: { + href: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/4/comments', + }, + review_comments: { + href: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls/4/comments', + }, + review_comment: { + href: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls/comments{/number}', + }, + commits: { + href: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls/4/commits', + }, + statuses: { + href: 'https://api.github.com/repos/michaelmurray6298/react-inbox/statuses/f201c18eb4b44c24c0d8f9590e2fb3ada2f4d73f', + }, + }, + }, +]; + +const repoPR = { + url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls/4', + id: 133820061, + html_url: 'https://github.com/michaelmurray6298/react-inbox/pull/4', + diff_url: 'https://github.com/michaelmurray6298/react-inbox/pull/4.diff', + patch_url: 'https://github.com/michaelmurray6298/react-inbox/pull/4.patch', + issue_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/4', + number: 4, + state: 'open', + locked: false, + title: 'Redux refactor', + user: { + login: 'michaelmurray6298', + id: 24865792, + avatar_url: 'https://avatars1.githubusercontent.com/u/24865792?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/michaelmurray6298', + html_url: 'https://github.com/michaelmurray6298', + followers_url: 'https://api.github.com/users/michaelmurray6298/followers', + following_url: 'https://api.github.com/users/michaelmurray6298/following{/other_user}', + gists_url: 'https://api.github.com/users/michaelmurray6298/gists{/gist_id}', + starred_url: 'https://api.github.com/users/michaelmurray6298/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/michaelmurray6298/subscriptions', + organizations_url: 'https://api.github.com/users/michaelmurray6298/orgs', + repos_url: 'https://api.github.com/users/michaelmurray6298/repos', + events_url: 'https://api.github.com/users/michaelmurray6298/events{/privacy}', + received_events_url: 'https://api.github.com/users/michaelmurray6298/received_events', + type: 'User', + site_admin: false, + }, + body: '', + created_at: '2017-08-02T22:09:22Z', + updated_at: '2017-08-02T22:09:43Z', + closed_at: null, + merged_at: null, + merge_commit_sha: 'bcaffe28b70421e767b3f20e4c3178283f373cb1', + assignee: null, + assignees: [ + + ], + requested_reviewers: [ + + ], + milestone: { + url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/milestones/1', + html_url: 'https://github.com/michaelmurray6298/react-inbox/milestone/1', + labels_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/milestones/1/labels', + id: 2677830, + number: 1, + title: 'Test', + description: '', + creator: { + login: 'michaelmurray6298', + id: 24865792, + avatar_url: 'https://avatars1.githubusercontent.com/u/24865792?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/michaelmurray6298', + html_url: 'https://github.com/michaelmurray6298', + followers_url: 'https://api.github.com/users/michaelmurray6298/followers', + following_url: 'https://api.github.com/users/michaelmurray6298/following{/other_user}', + gists_url: 'https://api.github.com/users/michaelmurray6298/gists{/gist_id}', + starred_url: 'https://api.github.com/users/michaelmurray6298/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/michaelmurray6298/subscriptions', + organizations_url: 'https://api.github.com/users/michaelmurray6298/orgs', + repos_url: 'https://api.github.com/users/michaelmurray6298/repos', + events_url: 'https://api.github.com/users/michaelmurray6298/events{/privacy}', + received_events_url: 'https://api.github.com/users/michaelmurray6298/received_events', + type: 'User', + site_admin: false, + }, + open_issues: 1, + closed_issues: 1, + state: 'open', + created_at: '2017-08-02T22:09:34Z', + updated_at: '2017-08-02T22:13:26Z', + due_on: '2017-08-20T07:00:00Z', + closed_at: null, + }, + commits_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls/4/commits', + review_comments_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls/4/comments', + review_comment_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls/comments{/number}', + comments_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/4/comments', + statuses_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/statuses/f201c18eb4b44c24c0d8f9590e2fb3ada2f4d73f', + head: { + label: 'michaelmurray6298:redux-refactor', + ref: 'redux-refactor', + sha: 'f201c18eb4b44c24c0d8f9590e2fb3ada2f4d73f', + user: { + login: 'michaelmurray6298', + id: 24865792, + avatar_url: 'https://avatars1.githubusercontent.com/u/24865792?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/michaelmurray6298', + html_url: 'https://github.com/michaelmurray6298', + followers_url: 'https://api.github.com/users/michaelmurray6298/followers', + following_url: 'https://api.github.com/users/michaelmurray6298/following{/other_user}', + gists_url: 'https://api.github.com/users/michaelmurray6298/gists{/gist_id}', + starred_url: 'https://api.github.com/users/michaelmurray6298/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/michaelmurray6298/subscriptions', + organizations_url: 'https://api.github.com/users/michaelmurray6298/orgs', + repos_url: 'https://api.github.com/users/michaelmurray6298/repos', + events_url: 'https://api.github.com/users/michaelmurray6298/events{/privacy}', + received_events_url: 'https://api.github.com/users/michaelmurray6298/received_events', + type: 'User', + site_admin: false, + }, + repo: { + id: 97292532, + name: 'react-inbox', + full_name: 'michaelmurray6298/react-inbox', + owner: { + login: 'michaelmurray6298', + id: 24865792, + avatar_url: 'https://avatars1.githubusercontent.com/u/24865792?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/michaelmurray6298', + html_url: 'https://github.com/michaelmurray6298', + followers_url: 'https://api.github.com/users/michaelmurray6298/followers', + following_url: 'https://api.github.com/users/michaelmurray6298/following{/other_user}', + gists_url: 'https://api.github.com/users/michaelmurray6298/gists{/gist_id}', + starred_url: 'https://api.github.com/users/michaelmurray6298/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/michaelmurray6298/subscriptions', + organizations_url: 'https://api.github.com/users/michaelmurray6298/orgs', + repos_url: 'https://api.github.com/users/michaelmurray6298/repos', + events_url: 'https://api.github.com/users/michaelmurray6298/events{/privacy}', + received_events_url: 'https://api.github.com/users/michaelmurray6298/received_events', + type: 'User', + site_admin: false, + }, + private: false, + html_url: 'https://github.com/michaelmurray6298/react-inbox', + description: null, + fork: false, + url: 'https://api.github.com/repos/michaelmurray6298/react-inbox', + forks_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/forks', + keys_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/keys{/key_id}', + collaborators_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/collaborators{/collaborator}', + teams_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/teams', + hooks_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/hooks', + issue_events_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/events{/number}', + events_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/events', + assignees_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/assignees{/user}', + branches_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/branches{/branch}', + tags_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/tags', + blobs_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/blobs{/sha}', + git_tags_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/tags{/sha}', + git_refs_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/refs{/sha}', + trees_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/trees{/sha}', + statuses_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/statuses/{sha}', + languages_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/languages', + stargazers_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/stargazers', + contributors_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/contributors', + subscribers_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/subscribers', + subscription_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/subscription', + commits_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/commits{/sha}', + git_commits_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/commits{/sha}', + comments_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/comments{/number}', + issue_comment_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/comments{/number}', + contents_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/contents/{+path}', + compare_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/compare/{base}...{head}', + merges_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/merges', + archive_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/{archive_format}{/ref}', + downloads_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/downloads', + issues_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues{/number}', + pulls_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls{/number}', + milestones_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/milestones{/number}', + notifications_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/notifications{?since,all,participating}', + labels_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/labels{/name}', + releases_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/releases{/id}', + deployments_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/deployments', + created_at: '2017-07-15T04:40:38Z', + updated_at: '2017-07-17T23:57:59Z', + pushed_at: '2017-08-02T22:09:22Z', + git_url: 'git://github.com/michaelmurray6298/react-inbox.git', + ssh_url: 'git@github.com:michaelmurray6298/react-inbox.git', + clone_url: 'https://github.com/michaelmurray6298/react-inbox.git', + svn_url: 'https://github.com/michaelmurray6298/react-inbox', + homepage: null, + size: 229, + stargazers_count: 0, + watchers_count: 0, + language: 'JavaScript', + has_issues: true, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + forks_count: 0, + mirror_url: null, + open_issues_count: 2, + forks: 0, + open_issues: 2, + watchers: 0, + default_branch: 'master', + }, + }, + base: { + label: 'michaelmurray6298:master', + ref: 'master', + sha: 'd4d1dc5992fe50d0d292be175505f4ab5e187f2c', + user: { + login: 'michaelmurray6298', + id: 24865792, + avatar_url: 'https://avatars1.githubusercontent.com/u/24865792?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/michaelmurray6298', + html_url: 'https://github.com/michaelmurray6298', + followers_url: 'https://api.github.com/users/michaelmurray6298/followers', + following_url: 'https://api.github.com/users/michaelmurray6298/following{/other_user}', + gists_url: 'https://api.github.com/users/michaelmurray6298/gists{/gist_id}', + starred_url: 'https://api.github.com/users/michaelmurray6298/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/michaelmurray6298/subscriptions', + organizations_url: 'https://api.github.com/users/michaelmurray6298/orgs', + repos_url: 'https://api.github.com/users/michaelmurray6298/repos', + events_url: 'https://api.github.com/users/michaelmurray6298/events{/privacy}', + received_events_url: 'https://api.github.com/users/michaelmurray6298/received_events', + type: 'User', + site_admin: false, + }, + repo: { + id: 97292532, + name: 'react-inbox', + full_name: 'michaelmurray6298/react-inbox', + owner: { + login: 'michaelmurray6298', + id: 24865792, + avatar_url: 'https://avatars1.githubusercontent.com/u/24865792?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/michaelmurray6298', + html_url: 'https://github.com/michaelmurray6298', + followers_url: 'https://api.github.com/users/michaelmurray6298/followers', + following_url: 'https://api.github.com/users/michaelmurray6298/following{/other_user}', + gists_url: 'https://api.github.com/users/michaelmurray6298/gists{/gist_id}', + starred_url: 'https://api.github.com/users/michaelmurray6298/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/michaelmurray6298/subscriptions', + organizations_url: 'https://api.github.com/users/michaelmurray6298/orgs', + repos_url: 'https://api.github.com/users/michaelmurray6298/repos', + events_url: 'https://api.github.com/users/michaelmurray6298/events{/privacy}', + received_events_url: 'https://api.github.com/users/michaelmurray6298/received_events', + type: 'User', + site_admin: false, + }, + private: false, + html_url: 'https://github.com/michaelmurray6298/react-inbox', + description: null, + fork: false, + url: 'https://api.github.com/repos/michaelmurray6298/react-inbox', + forks_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/forks', + keys_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/keys{/key_id}', + collaborators_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/collaborators{/collaborator}', + teams_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/teams', + hooks_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/hooks', + issue_events_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/events{/number}', + events_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/events', + assignees_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/assignees{/user}', + branches_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/branches{/branch}', + tags_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/tags', + blobs_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/blobs{/sha}', + git_tags_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/tags{/sha}', + git_refs_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/refs{/sha}', + trees_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/trees{/sha}', + statuses_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/statuses/{sha}', + languages_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/languages', + stargazers_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/stargazers', + contributors_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/contributors', + subscribers_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/subscribers', + subscription_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/subscription', + commits_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/commits{/sha}', + git_commits_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/commits{/sha}', + comments_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/comments{/number}', + issue_comment_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/comments{/number}', + contents_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/contents/{+path}', + compare_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/compare/{base}...{head}', + merges_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/merges', + archive_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/{archive_format}{/ref}', + downloads_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/downloads', + issues_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues{/number}', + pulls_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls{/number}', + milestones_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/milestones{/number}', + notifications_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/notifications{?since,all,participating}', + labels_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/labels{/name}', + releases_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/releases{/id}', + deployments_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/deployments', + created_at: '2017-07-15T04:40:38Z', + updated_at: '2017-07-17T23:57:59Z', + pushed_at: '2017-08-02T22:09:22Z', + git_url: 'git://github.com/michaelmurray6298/react-inbox.git', + ssh_url: 'git@github.com:michaelmurray6298/react-inbox.git', + clone_url: 'https://github.com/michaelmurray6298/react-inbox.git', + svn_url: 'https://github.com/michaelmurray6298/react-inbox', + homepage: null, + size: 229, + stargazers_count: 0, + watchers_count: 0, + language: 'JavaScript', + has_issues: true, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + forks_count: 0, + mirror_url: null, + open_issues_count: 2, + forks: 0, + open_issues: 2, + watchers: 0, + default_branch: 'master', + }, + }, + _links: { + self: { + href: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls/4', + }, + html: { + href: 'https://github.com/michaelmurray6298/react-inbox/pull/4', + }, + issue: { + href: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/4', + }, + comments: { + href: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/4/comments', + }, + review_comments: { + href: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls/4/comments', + }, + review_comment: { + href: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls/comments{/number}', + }, + commits: { + href: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls/4/commits', + }, + statuses: { + href: 'https://api.github.com/repos/michaelmurray6298/react-inbox/statuses/f201c18eb4b44c24c0d8f9590e2fb3ada2f4d73f', + }, + }, + merged: false, + mergeable: true, + rebaseable: true, + mergeable_state: 'clean', + merged_by: null, + comments: 0, + review_comments: 0, + maintainer_can_modify: false, + commits: 4, + additions: 1354, + deletions: 578, + changed_files: 18, +}; + +const milestonesFetch = [ + { + url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/milestones/1', + html_url: 'https://github.com/michaelmurray6298/react-inbox/milestone/1', + labels_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/milestones/1/labels', + id: 2677830, + number: 1, + title: 'Test', + description: '', + creator: { + login: 'michaelmurray6298', + id: 24865792, + avatar_url: 'https://avatars1.githubusercontent.com/u/24865792?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/michaelmurray6298', + html_url: 'https://github.com/michaelmurray6298', + followers_url: 'https://api.github.com/users/michaelmurray6298/followers', + following_url: 'https://api.github.com/users/michaelmurray6298/following{/other_user}', + gists_url: 'https://api.github.com/users/michaelmurray6298/gists{/gist_id}', + starred_url: 'https://api.github.com/users/michaelmurray6298/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/michaelmurray6298/subscriptions', + organizations_url: 'https://api.github.com/users/michaelmurray6298/orgs', + repos_url: 'https://api.github.com/users/michaelmurray6298/repos', + events_url: 'https://api.github.com/users/michaelmurray6298/events{/privacy}', + received_events_url: 'https://api.github.com/users/michaelmurray6298/received_events', + type: 'User', + site_admin: false, + }, + open_issues: 1, + closed_issues: 1, + state: 'open', + created_at: '2017-08-02T22:09:34Z', + updated_at: '2017-08-02T22:13:26Z', + due_on: '2017-08-20T07:00:00Z', + closed_at: null, + }, +]; + +module.exports = { + issuesFetch, + pullRequestsFetch, + repoPR, + milestonesFetch, +}; diff --git a/test/Repos.test.js b/test/Repos.test.js new file mode 100644 index 0000000..5e753f6 --- /dev/null +++ b/test/Repos.test.js @@ -0,0 +1,131 @@ +/* eslint-disable no-undef, no-unused-expressions */ +const { expect } = require('chai'); +require('dotenv').config(); +const { repoFetch, reposFetch, orgRepoFetch, orgReposFetch } = require('./ReposMock'); +const nock = require('nock'); +const Repos = require('../src/models/Repos'); +const Repo = require('../src/models/Repo'); + +describe('Repos model with username, reponame, and orgname passed in', () => { + const repos = new Repos('michaelmurray6298', 'skiski-app', 'ski-ski'); + + it('accepts username, reponame, and orgname as passed in arguments', () => { + expect(repos.userReposUrl).to.equal(`https://api.github.com/users/michaelmurray6298/repos?access_token=${process.env.TKN}`); + expect(repos.orgReposUrl).to.equal(`https://api.github.com/orgs/ski-ski/repos?access_token=${process.env.TKN}`); + expect(repos.userRepoUrl).to.equal(`https://api.github.com/repos/michaelmurray6298/skiski-app?access_token=${process.env.TKN}`); + expect(repos.orgRepoUrl).to.equal(`https://api.github.com/repos/ski-ski/skiski-app?access_token=${process.env.TKN}`); + expect(repos.orgName).to.equal('ski-ski'); + expect(repos.repoName).to.equal('skiski-app'); + }); + after((done) => { + done(); + }); +}); + +describe('Repos model with username', () => { + const allReposByUser = new Repos('michaelmurray6298', undefined, undefined); + + it('accepts username as a passed in arguments', () => { + expect(allReposByUser.userReposUrl).to.equal(`https://api.github.com/users/michaelmurray6298/repos?access_token=${process.env.TKN}`); + expect(allReposByUser.orgReposUrl).to.equal(`https://api.github.com/orgs/undefined/repos?access_token=${process.env.TKN}`); + expect(allReposByUser.userRepoUrl).to.equal(`https://api.github.com/repos/michaelmurray6298/undefined?access_token=${process.env.TKN}`); + expect(allReposByUser.orgRepoUrl).to.equal(`https://api.github.com/repos/undefined/undefined?access_token=${process.env.TKN}`); + expect(allReposByUser.orgName).to.equal(undefined); + expect(allReposByUser.repoName).to.equal(undefined); + }); + after((done) => { + done(); + }); + + it('should fetch the user repos', async () => { + nock('https://api.github.com') + .get(`/users/michaelmurray6298/repos?access_token=${process.env.TKN}`) + .reply(200, reposFetch); + const userRepos = await allReposByUser.userRepos; + expect(userRepos[0]).to.be.an.instanceof(Repo); + }); + after((done) => { + done(); + }); +}); + +describe('Repos model with username and reponame passed in', () => { + const singleRepoByUser = new Repos('michaelmurray6298', 'react-inbox', undefined); + + it('accepts username and reponame as a passed in arguments', () => { + expect(singleRepoByUser.userReposUrl).to.equal(`https://api.github.com/users/michaelmurray6298/repos?access_token=${process.env.TKN}`); + expect(singleRepoByUser.orgReposUrl).to.equal(`https://api.github.com/orgs/undefined/repos?access_token=${process.env.TKN}`); + expect(singleRepoByUser.userRepoUrl).to.equal(`https://api.github.com/repos/michaelmurray6298/react-inbox?access_token=${process.env.TKN}`); + expect(singleRepoByUser.orgRepoUrl).to.equal(`https://api.github.com/repos/undefined/react-inbox?access_token=${process.env.TKN}`); + expect(singleRepoByUser.orgName).to.equal(undefined); + expect(singleRepoByUser.repoName).to.equal('react-inbox'); + }); + after((done) => { + done(); + }); + + it('should fetch the user repo', async () => { + nock('https://api.github.com') + .get(`/repos/michaelmurray6298/react-inbox?access_token=${process.env.TKN}`) + .reply(200, repoFetch); + const userRepo = await singleRepoByUser.userRepos; + expect(userRepo[0]).to.be.an.instanceof(Repo); + }); + after((done) => { + done(); + }); +}); + +describe('Repos model with username and orgname passed in', () => { + const allReposByOrg = new Repos('michaelmurray6298', undefined, 'ski-ski'); + + it('accepts username and orgname as a passed in arguments', () => { + expect(allReposByOrg.userReposUrl).to.equal(`https://api.github.com/users/michaelmurray6298/repos?access_token=${process.env.TKN}`); + expect(allReposByOrg.orgReposUrl).to.equal(`https://api.github.com/orgs/ski-ski/repos?access_token=${process.env.TKN}`); + expect(allReposByOrg.userRepoUrl).to.equal(`https://api.github.com/repos/michaelmurray6298/undefined?access_token=${process.env.TKN}`); + expect(allReposByOrg.orgRepoUrl).to.equal(`https://api.github.com/repos/ski-ski/undefined?access_token=${process.env.TKN}`); + expect(allReposByOrg.orgName).to.equal('ski-ski'); + expect(allReposByOrg.repoName).to.equal(undefined); + }); + after((done) => { + done(); + }); + + it('should fetch the org repos', async () => { + nock('https://api.github.com') + .get(`/orgs/ski-ski/repos?access_token=${process.env.TKN}`) + .reply(200, orgReposFetch); + const orgRepos = await allReposByOrg.orgRepos; + expect(orgRepos[0]).to.be.an.instanceof(Repo); + }); + after((done) => { + done(); + }); +}); + +describe('Repos model with reponame and orgname passed in', () => { + const singleRepoByOrg = new Repos(undefined, 'skiski-app', 'ski-ski'); + + it('accepts reponame, and orgname as passed in arguments', () => { + expect(singleRepoByOrg.userReposUrl).to.equal(`https://api.github.com/users/undefined/repos?access_token=${process.env.TKN}`); + expect(singleRepoByOrg.orgReposUrl).to.equal(`https://api.github.com/orgs/ski-ski/repos?access_token=${process.env.TKN}`); + expect(singleRepoByOrg.userRepoUrl).to.equal(`https://api.github.com/repos/undefined/skiski-app?access_token=${process.env.TKN}`); + expect(singleRepoByOrg.orgRepoUrl).to.equal(`https://api.github.com/repos/ski-ski/skiski-app?access_token=${process.env.TKN}`); + expect(singleRepoByOrg.orgName).to.equal('ski-ski'); + expect(singleRepoByOrg.repoName).to.equal('skiski-app'); + }); + after((done) => { + done(); + }); + + it('should fetch the org repo', async () => { + nock('https://api.github.com') + .get(`/repos/ski-ski/skiski-app?access_token=${process.env.TKN}`) + .reply(200, orgRepoFetch); + const orgRepo = await singleRepoByOrg.orgRepos; + expect(orgRepo[0]).to.be.an.instanceof(Repo); + }); + after((done) => { + done(); + }); +}); diff --git a/test/ReposMock.js b/test/ReposMock.js new file mode 100644 index 0000000..1e3ec1a --- /dev/null +++ b/test/ReposMock.js @@ -0,0 +1,516 @@ +const repoFetch = [ + { + id: 97292532, + name: 'react-inbox', + full_name: 'michaelmurray6298/react-inbox', + owner: { + login: 'michaelmurray6298', + id: 24865792, + avatar_url: 'https://avatars1.githubusercontent.com/u/24865792?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/michaelmurray6298', + html_url: 'https://github.com/michaelmurray6298', + followers_url: 'https://api.github.com/users/michaelmurray6298/followers', + following_url: 'https://api.github.com/users/michaelmurray6298/following{/other_user}', + gists_url: 'https://api.github.com/users/michaelmurray6298/gists{/gist_id}', + starred_url: 'https://api.github.com/users/michaelmurray6298/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/michaelmurray6298/subscriptions', + organizations_url: 'https://api.github.com/users/michaelmurray6298/orgs', + repos_url: 'https://api.github.com/users/michaelmurray6298/repos', + events_url: 'https://api.github.com/users/michaelmurray6298/events{/privacy}', + received_events_url: 'https://api.github.com/users/michaelmurray6298/received_events', + type: 'User', + site_admin: false, + }, + private: false, + html_url: 'https://github.com/michaelmurray6298/react-inbox', + description: null, + fork: false, + url: 'https://api.github.com/repos/michaelmurray6298/react-inbox', + forks_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/forks', + keys_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/keys{/key_id}', + collaborators_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/collaborators{/collaborator}', + teams_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/teams', + hooks_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/hooks', + issue_events_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/events{/number}', + events_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/events', + assignees_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/assignees{/user}', + branches_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/branches{/branch}', + tags_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/tags', + blobs_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/blobs{/sha}', + git_tags_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/tags{/sha}', + git_refs_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/refs{/sha}', + trees_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/trees{/sha}', + statuses_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/statuses/{sha}', + languages_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/languages', + stargazers_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/stargazers', + contributors_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/contributors', + subscribers_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/subscribers', + subscription_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/subscription', + commits_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/commits{/sha}', + git_commits_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/git/commits{/sha}', + comments_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/comments{/number}', + issue_comment_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues/comments{/number}', + contents_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/contents/{+path}', + compare_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/compare/{base}...{head}', + merges_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/merges', + archive_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/{archive_format}{/ref}', + downloads_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/downloads', + issues_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/issues{/number}', + pulls_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/pulls{/number}', + milestones_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/milestones{/number}', + notifications_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/notifications{?since,all,participating}', + labels_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/labels{/name}', + releases_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/releases{/id}', + deployments_url: 'https://api.github.com/repos/michaelmurray6298/react-inbox/deployments', + created_at: '2017-07-15T04:40:38Z', + updated_at: '2017-07-17T23:57:59Z', + pushed_at: '2017-08-02T22:09:22Z', + git_url: 'git://github.com/michaelmurray6298/react-inbox.git', + ssh_url: 'git@github.com:michaelmurray6298/react-inbox.git', + clone_url: 'https://github.com/michaelmurray6298/react-inbox.git', + svn_url: 'https://github.com/michaelmurray6298/react-inbox', + homepage: null, + size: 229, + stargazers_count: 0, + watchers_count: 0, + language: 'JavaScript', + has_issues: true, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + forks_count: 0, + mirror_url: null, + open_issues_count: 2, + forks: 0, + open_issues: 2, + watchers: 0, + default_branch: 'master', + permissions: { + admin: true, + push: true, + pull: true, + }, + allow_squash_merge: true, + allow_merge_commit: true, + allow_rebase_merge: true, + network_count: 0, + subscribers_count: 0, + }, +]; + +const reposFetch = [ + { + id: 99629220, + name: 'dashboard-spa', + full_name: 'michaelmurray6298/dashboard-spa', + owner: { + login: 'michaelmurray6298', + id: 24865792, + avatar_url: 'https://avatars1.githubusercontent.com/u/24865792?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/michaelmurray6298', + html_url: 'https://github.com/michaelmurray6298', + followers_url: 'https://api.github.com/users/michaelmurray6298/followers', + following_url: 'https://api.github.com/users/michaelmurray6298/following{/other_user}', + gists_url: 'https://api.github.com/users/michaelmurray6298/gists{/gist_id}', + starred_url: 'https://api.github.com/users/michaelmurray6298/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/michaelmurray6298/subscriptions', + organizations_url: 'https://api.github.com/users/michaelmurray6298/orgs', + repos_url: 'https://api.github.com/users/michaelmurray6298/repos', + events_url: 'https://api.github.com/users/michaelmurray6298/events{/privacy}', + received_events_url: 'https://api.github.com/users/michaelmurray6298/received_events', + type: 'User', + site_admin: false, + }, + private: false, + html_url: 'https://github.com/michaelmurray6298/dashboard-spa', + description: null, + fork: true, + url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa', + forks_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/forks', + keys_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/keys{/key_id}', + collaborators_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/collaborators{/collaborator}', + teams_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/teams', + hooks_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/hooks', + issue_events_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/issues/events{/number}', + events_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/events', + assignees_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/assignees{/user}', + branches_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/branches{/branch}', + tags_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/tags', + blobs_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/git/blobs{/sha}', + git_tags_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/git/tags{/sha}', + git_refs_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/git/refs{/sha}', + trees_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/git/trees{/sha}', + statuses_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/statuses/{sha}', + languages_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/languages', + stargazers_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/stargazers', + contributors_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/contributors', + subscribers_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/subscribers', + subscription_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/subscription', + commits_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/commits{/sha}', + git_commits_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/git/commits{/sha}', + comments_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/comments{/number}', + issue_comment_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/issues/comments{/number}', + contents_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/contents/{+path}', + compare_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/compare/{base}...{head}', + merges_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/merges', + archive_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/{archive_format}{/ref}', + downloads_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/downloads', + issues_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/issues{/number}', + pulls_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/pulls{/number}', + milestones_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/milestones{/number}', + notifications_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/notifications{?since,all,participating}', + labels_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/labels{/name}', + releases_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/releases{/id}', + deployments_url: 'https://api.github.com/repos/michaelmurray6298/dashboard-spa/deployments', + created_at: '2017-08-07T23:26:30Z', + updated_at: '2017-08-07T23:26:32Z', + pushed_at: '2017-08-10T18:40:48Z', + git_url: 'git://github.com/michaelmurray6298/dashboard-spa.git', + ssh_url: 'git@github.com:michaelmurray6298/dashboard-spa.git', + clone_url: 'https://github.com/michaelmurray6298/dashboard-spa.git', + svn_url: 'https://github.com/michaelmurray6298/dashboard-spa', + homepage: null, + size: 289, + stargazers_count: 0, + watchers_count: 0, + language: 'JavaScript', + has_issues: false, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + forks_count: 0, + mirror_url: null, + open_issues_count: 0, + forks: 0, + open_issues: 0, + watchers: 0, + default_branch: 'master', + permissions: { + admin: true, + push: true, + pull: true, + }, + }, +]; + +const orgRepoFetch = [ + { + id: 95143360, + name: 'skiski-app', + full_name: 'ski-ski/skiski-app', + owner: { + login: 'ski-ski', + id: 29638033, + avatar_url: 'https://avatars3.githubusercontent.com/u/29638033?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/ski-ski', + html_url: 'https://github.com/ski-ski', + followers_url: 'https://api.github.com/users/ski-ski/followers', + following_url: 'https://api.github.com/users/ski-ski/following{/other_user}', + gists_url: 'https://api.github.com/users/ski-ski/gists{/gist_id}', + starred_url: 'https://api.github.com/users/ski-ski/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/ski-ski/subscriptions', + organizations_url: 'https://api.github.com/users/ski-ski/orgs', + repos_url: 'https://api.github.com/users/ski-ski/repos', + events_url: 'https://api.github.com/users/ski-ski/events{/privacy}', + received_events_url: 'https://api.github.com/users/ski-ski/received_events', + type: 'Organization', + site_admin: false, + }, + private: false, + html_url: 'https://github.com/ski-ski/skiski-app', + description: null, + fork: false, + url: 'https://api.github.com/repos/ski-ski/skiski-app', + forks_url: 'https://api.github.com/repos/ski-ski/skiski-app/forks', + keys_url: 'https://api.github.com/repos/ski-ski/skiski-app/keys{/key_id}', + collaborators_url: 'https://api.github.com/repos/ski-ski/skiski-app/collaborators{/collaborator}', + teams_url: 'https://api.github.com/repos/ski-ski/skiski-app/teams', + hooks_url: 'https://api.github.com/repos/ski-ski/skiski-app/hooks', + issue_events_url: 'https://api.github.com/repos/ski-ski/skiski-app/issues/events{/number}', + events_url: 'https://api.github.com/repos/ski-ski/skiski-app/events', + assignees_url: 'https://api.github.com/repos/ski-ski/skiski-app/assignees{/user}', + branches_url: 'https://api.github.com/repos/ski-ski/skiski-app/branches{/branch}', + tags_url: 'https://api.github.com/repos/ski-ski/skiski-app/tags', + blobs_url: 'https://api.github.com/repos/ski-ski/skiski-app/git/blobs{/sha}', + git_tags_url: 'https://api.github.com/repos/ski-ski/skiski-app/git/tags{/sha}', + git_refs_url: 'https://api.github.com/repos/ski-ski/skiski-app/git/refs{/sha}', + trees_url: 'https://api.github.com/repos/ski-ski/skiski-app/git/trees{/sha}', + statuses_url: 'https://api.github.com/repos/ski-ski/skiski-app/statuses/{sha}', + languages_url: 'https://api.github.com/repos/ski-ski/skiski-app/languages', + stargazers_url: 'https://api.github.com/repos/ski-ski/skiski-app/stargazers', + contributors_url: 'https://api.github.com/repos/ski-ski/skiski-app/contributors', + subscribers_url: 'https://api.github.com/repos/ski-ski/skiski-app/subscribers', + subscription_url: 'https://api.github.com/repos/ski-ski/skiski-app/subscription', + commits_url: 'https://api.github.com/repos/ski-ski/skiski-app/commits{/sha}', + git_commits_url: 'https://api.github.com/repos/ski-ski/skiski-app/git/commits{/sha}', + comments_url: 'https://api.github.com/repos/ski-ski/skiski-app/comments{/number}', + issue_comment_url: 'https://api.github.com/repos/ski-ski/skiski-app/issues/comments{/number}', + contents_url: 'https://api.github.com/repos/ski-ski/skiski-app/contents/{+path}', + compare_url: 'https://api.github.com/repos/ski-ski/skiski-app/compare/{base}...{head}', + merges_url: 'https://api.github.com/repos/ski-ski/skiski-app/merges', + archive_url: 'https://api.github.com/repos/ski-ski/skiski-app/{archive_format}{/ref}', + downloads_url: 'https://api.github.com/repos/ski-ski/skiski-app/downloads', + issues_url: 'https://api.github.com/repos/ski-ski/skiski-app/issues{/number}', + pulls_url: 'https://api.github.com/repos/ski-ski/skiski-app/pulls{/number}', + milestones_url: 'https://api.github.com/repos/ski-ski/skiski-app/milestones{/number}', + notifications_url: 'https://api.github.com/repos/ski-ski/skiski-app/notifications{?since,all,participating}', + labels_url: 'https://api.github.com/repos/ski-ski/skiski-app/labels{/name}', + releases_url: 'https://api.github.com/repos/ski-ski/skiski-app/releases{/id}', + deployments_url: 'https://api.github.com/repos/ski-ski/skiski-app/deployments', + created_at: '2017-06-22T18:08:21Z', + updated_at: '2017-06-23T22:48:38Z', + pushed_at: '2017-08-03T02:23:38Z', + git_url: 'git://github.com/ski-ski/skiski-app.git', + ssh_url: 'git@github.com:ski-ski/skiski-app.git', + clone_url: 'https://github.com/ski-ski/skiski-app.git', + svn_url: 'https://github.com/ski-ski/skiski-app', + homepage: null, + size: 472, + stargazers_count: 0, + watchers_count: 0, + language: 'JavaScript', + has_issues: true, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + forks_count: 0, + mirror_url: null, + open_issues_count: 2, + forks: 0, + open_issues: 2, + watchers: 0, + default_branch: 'master', + permissions: { + admin: true, + push: true, + pull: true, + }, + allow_squash_merge: true, + allow_merge_commit: true, + allow_rebase_merge: true, + organization: { + login: 'ski-ski', + id: 29638033, + avatar_url: 'https://avatars3.githubusercontent.com/u/29638033?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/ski-ski', + html_url: 'https://github.com/ski-ski', + followers_url: 'https://api.github.com/users/ski-ski/followers', + following_url: 'https://api.github.com/users/ski-ski/following{/other_user}', + gists_url: 'https://api.github.com/users/ski-ski/gists{/gist_id}', + starred_url: 'https://api.github.com/users/ski-ski/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/ski-ski/subscriptions', + organizations_url: 'https://api.github.com/users/ski-ski/orgs', + repos_url: 'https://api.github.com/users/ski-ski/repos', + events_url: 'https://api.github.com/users/ski-ski/events{/privacy}', + received_events_url: 'https://api.github.com/users/ski-ski/received_events', + type: 'Organization', + site_admin: false, + }, + network_count: 0, + subscribers_count: 0, + }, +]; + +const orgReposFetch = [ + { + id: 95143360, + name: 'skiski-app', + full_name: 'ski-ski/skiski-app', + owner: { + login: 'ski-ski', + id: 29638033, + avatar_url: 'https://avatars3.githubusercontent.com/u/29638033?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/ski-ski', + html_url: 'https://github.com/ski-ski', + followers_url: 'https://api.github.com/users/ski-ski/followers', + following_url: 'https://api.github.com/users/ski-ski/following{/other_user}', + gists_url: 'https://api.github.com/users/ski-ski/gists{/gist_id}', + starred_url: 'https://api.github.com/users/ski-ski/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/ski-ski/subscriptions', + organizations_url: 'https://api.github.com/users/ski-ski/orgs', + repos_url: 'https://api.github.com/users/ski-ski/repos', + events_url: 'https://api.github.com/users/ski-ski/events{/privacy}', + received_events_url: 'https://api.github.com/users/ski-ski/received_events', + type: 'Organization', + site_admin: false, + }, + private: false, + html_url: 'https://github.com/ski-ski/skiski-app', + description: null, + fork: false, + url: 'https://api.github.com/repos/ski-ski/skiski-app', + forks_url: 'https://api.github.com/repos/ski-ski/skiski-app/forks', + keys_url: 'https://api.github.com/repos/ski-ski/skiski-app/keys{/key_id}', + collaborators_url: 'https://api.github.com/repos/ski-ski/skiski-app/collaborators{/collaborator}', + teams_url: 'https://api.github.com/repos/ski-ski/skiski-app/teams', + hooks_url: 'https://api.github.com/repos/ski-ski/skiski-app/hooks', + issue_events_url: 'https://api.github.com/repos/ski-ski/skiski-app/issues/events{/number}', + events_url: 'https://api.github.com/repos/ski-ski/skiski-app/events', + assignees_url: 'https://api.github.com/repos/ski-ski/skiski-app/assignees{/user}', + branches_url: 'https://api.github.com/repos/ski-ski/skiski-app/branches{/branch}', + tags_url: 'https://api.github.com/repos/ski-ski/skiski-app/tags', + blobs_url: 'https://api.github.com/repos/ski-ski/skiski-app/git/blobs{/sha}', + git_tags_url: 'https://api.github.com/repos/ski-ski/skiski-app/git/tags{/sha}', + git_refs_url: 'https://api.github.com/repos/ski-ski/skiski-app/git/refs{/sha}', + trees_url: 'https://api.github.com/repos/ski-ski/skiski-app/git/trees{/sha}', + statuses_url: 'https://api.github.com/repos/ski-ski/skiski-app/statuses/{sha}', + languages_url: 'https://api.github.com/repos/ski-ski/skiski-app/languages', + stargazers_url: 'https://api.github.com/repos/ski-ski/skiski-app/stargazers', + contributors_url: 'https://api.github.com/repos/ski-ski/skiski-app/contributors', + subscribers_url: 'https://api.github.com/repos/ski-ski/skiski-app/subscribers', + subscription_url: 'https://api.github.com/repos/ski-ski/skiski-app/subscription', + commits_url: 'https://api.github.com/repos/ski-ski/skiski-app/commits{/sha}', + git_commits_url: 'https://api.github.com/repos/ski-ski/skiski-app/git/commits{/sha}', + comments_url: 'https://api.github.com/repos/ski-ski/skiski-app/comments{/number}', + issue_comment_url: 'https://api.github.com/repos/ski-ski/skiski-app/issues/comments{/number}', + contents_url: 'https://api.github.com/repos/ski-ski/skiski-app/contents/{+path}', + compare_url: 'https://api.github.com/repos/ski-ski/skiski-app/compare/{base}...{head}', + merges_url: 'https://api.github.com/repos/ski-ski/skiski-app/merges', + archive_url: 'https://api.github.com/repos/ski-ski/skiski-app/{archive_format}{/ref}', + downloads_url: 'https://api.github.com/repos/ski-ski/skiski-app/downloads', + issues_url: 'https://api.github.com/repos/ski-ski/skiski-app/issues{/number}', + pulls_url: 'https://api.github.com/repos/ski-ski/skiski-app/pulls{/number}', + milestones_url: 'https://api.github.com/repos/ski-ski/skiski-app/milestones{/number}', + notifications_url: 'https://api.github.com/repos/ski-ski/skiski-app/notifications{?since,all,participating}', + labels_url: 'https://api.github.com/repos/ski-ski/skiski-app/labels{/name}', + releases_url: 'https://api.github.com/repos/ski-ski/skiski-app/releases{/id}', + deployments_url: 'https://api.github.com/repos/ski-ski/skiski-app/deployments', + created_at: '2017-06-22T18:08:21Z', + updated_at: '2017-06-23T22:48:38Z', + pushed_at: '2017-08-03T02:23:38Z', + git_url: 'git://github.com/ski-ski/skiski-app.git', + ssh_url: 'git@github.com:ski-ski/skiski-app.git', + clone_url: 'https://github.com/ski-ski/skiski-app.git', + svn_url: 'https://github.com/ski-ski/skiski-app', + homepage: null, + size: 472, + stargazers_count: 0, + watchers_count: 0, + language: 'JavaScript', + has_issues: true, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + forks_count: 0, + mirror_url: null, + open_issues_count: 2, + forks: 0, + open_issues: 2, + watchers: 0, + default_branch: 'master', + permissions: { + admin: true, + push: true, + pull: true, + }, + }, + { + id: 99619838, + name: 'TEST', + full_name: 'ski-ski/TEST', + owner: { + login: 'ski-ski', + id: 29638033, + avatar_url: 'https://avatars3.githubusercontent.com/u/29638033?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/ski-ski', + html_url: 'https://github.com/ski-ski', + followers_url: 'https://api.github.com/users/ski-ski/followers', + following_url: 'https://api.github.com/users/ski-ski/following{/other_user}', + gists_url: 'https://api.github.com/users/ski-ski/gists{/gist_id}', + starred_url: 'https://api.github.com/users/ski-ski/starred{/owner}{/repo}', + subscriptions_url: 'https://api.github.com/users/ski-ski/subscriptions', + organizations_url: 'https://api.github.com/users/ski-ski/orgs', + repos_url: 'https://api.github.com/users/ski-ski/repos', + events_url: 'https://api.github.com/users/ski-ski/events{/privacy}', + received_events_url: 'https://api.github.com/users/ski-ski/received_events', + type: 'Organization', + site_admin: false, + }, + private: false, + html_url: 'https://github.com/ski-ski/TEST', + description: null, + fork: false, + url: 'https://api.github.com/repos/ski-ski/TEST', + forks_url: 'https://api.github.com/repos/ski-ski/TEST/forks', + keys_url: 'https://api.github.com/repos/ski-ski/TEST/keys{/key_id}', + collaborators_url: 'https://api.github.com/repos/ski-ski/TEST/collaborators{/collaborator}', + teams_url: 'https://api.github.com/repos/ski-ski/TEST/teams', + hooks_url: 'https://api.github.com/repos/ski-ski/TEST/hooks', + issue_events_url: 'https://api.github.com/repos/ski-ski/TEST/issues/events{/number}', + events_url: 'https://api.github.com/repos/ski-ski/TEST/events', + assignees_url: 'https://api.github.com/repos/ski-ski/TEST/assignees{/user}', + branches_url: 'https://api.github.com/repos/ski-ski/TEST/branches{/branch}', + tags_url: 'https://api.github.com/repos/ski-ski/TEST/tags', + blobs_url: 'https://api.github.com/repos/ski-ski/TEST/git/blobs{/sha}', + git_tags_url: 'https://api.github.com/repos/ski-ski/TEST/git/tags{/sha}', + git_refs_url: 'https://api.github.com/repos/ski-ski/TEST/git/refs{/sha}', + trees_url: 'https://api.github.com/repos/ski-ski/TEST/git/trees{/sha}', + statuses_url: 'https://api.github.com/repos/ski-ski/TEST/statuses/{sha}', + languages_url: 'https://api.github.com/repos/ski-ski/TEST/languages', + stargazers_url: 'https://api.github.com/repos/ski-ski/TEST/stargazers', + contributors_url: 'https://api.github.com/repos/ski-ski/TEST/contributors', + subscribers_url: 'https://api.github.com/repos/ski-ski/TEST/subscribers', + subscription_url: 'https://api.github.com/repos/ski-ski/TEST/subscription', + commits_url: 'https://api.github.com/repos/ski-ski/TEST/commits{/sha}', + git_commits_url: 'https://api.github.com/repos/ski-ski/TEST/git/commits{/sha}', + comments_url: 'https://api.github.com/repos/ski-ski/TEST/comments{/number}', + issue_comment_url: 'https://api.github.com/repos/ski-ski/TEST/issues/comments{/number}', + contents_url: 'https://api.github.com/repos/ski-ski/TEST/contents/{+path}', + compare_url: 'https://api.github.com/repos/ski-ski/TEST/compare/{base}...{head}', + merges_url: 'https://api.github.com/repos/ski-ski/TEST/merges', + archive_url: 'https://api.github.com/repos/ski-ski/TEST/{archive_format}{/ref}', + downloads_url: 'https://api.github.com/repos/ski-ski/TEST/downloads', + issues_url: 'https://api.github.com/repos/ski-ski/TEST/issues{/number}', + pulls_url: 'https://api.github.com/repos/ski-ski/TEST/pulls{/number}', + milestones_url: 'https://api.github.com/repos/ski-ski/TEST/milestones{/number}', + notifications_url: 'https://api.github.com/repos/ski-ski/TEST/notifications{?since,all,participating}', + labels_url: 'https://api.github.com/repos/ski-ski/TEST/labels{/name}', + releases_url: 'https://api.github.com/repos/ski-ski/TEST/releases{/id}', + deployments_url: 'https://api.github.com/repos/ski-ski/TEST/deployments', + created_at: '2017-08-07T20:58:36Z', + updated_at: '2017-08-07T20:58:36Z', + pushed_at: '2017-08-07T20:58:36Z', + git_url: 'git://github.com/ski-ski/TEST.git', + ssh_url: 'git@github.com:ski-ski/TEST.git', + clone_url: 'https://github.com/ski-ski/TEST.git', + svn_url: 'https://github.com/ski-ski/TEST', + homepage: null, + size: 0, + stargazers_count: 0, + watchers_count: 0, + language: null, + has_issues: true, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + forks_count: 0, + mirror_url: null, + open_issues_count: 0, + forks: 0, + open_issues: 0, + watchers: 0, + default_branch: 'master', + permissions: { + admin: true, + push: true, + pull: true, + }, + }, +]; +module.exports = { + repoFetch, + reposFetch, + orgRepoFetch, + orgReposFetch, +}; diff --git a/test/User.test.js b/test/User.test.js new file mode 100644 index 0000000..c7f8427 --- /dev/null +++ b/test/User.test.js @@ -0,0 +1,84 @@ +/* eslint-disable no-undef, no-unused-expressions */ +const { expect } = require('chai'); +require('dotenv').config(); +const nock = require('nock'); +const User = require('../src/models/User'); + +describe('User model', () => { + const user = new User({ userName: 'michaelmurray6298' }); + + it('accepts a passed in argument', () => { + expect(user.userName).to.equal('michaelmurray6298'); + }); + after((done) => { + done(); + }); + + it('contains base url', () => { + expect(user.base).to.equal('https://api.github.com/users/'); + }); + after((done) => { + done(); + }); + + it('should fetch the user avatar', async () => { + const userFetch = { + login: 'michaelmurray6298', + id: 24865792, + avatar_url: 'https://avatars1.githubusercontent.com/u/24865792?v=4', + gravatar_id: '', + url: 'https://api.github.com/users/michaelmurray6298', + html_url: 'https://github.com/michaelmurray6298', + followers_url: 'https://api.github.com/users/michaelmurray6298/followers', + following_url: + 'https://api.github.com/users/michaelmurray6298/following{/other_user}', + gists_url: + 'https://api.github.com/users/michaelmurray6298/gists{/gist_id}', + starred_url: + 'https://api.github.com/users/michaelmurray6298/starred{/owner}{/repo}', + subscriptions_url: + 'https://api.github.com/users/michaelmurray6298/subscriptions', + organizations_url: 'https://api.github.com/users/michaelmurray6298/orgs', + repos_url: 'https://api.github.com/users/michaelmurray6298/repos', + events_url: + 'https://api.github.com/users/michaelmurray6298/events{/privacy}', + received_events_url: + 'https://api.github.com/users/michaelmurray6298/received_events', + type: 'User', + site_admin: false, + name: 'Michael Murray', + company: null, + blog: '', + location: null, + email: 'michaelmurray6298@gmail.com', + hireable: null, + bio: null, + public_repos: 20, + public_gists: 0, + followers: 0, + following: 0, + created_at: '2017-01-01T19:17:16Z', + updated_at: '2017-07-27T16:44:43Z', + private_gists: 0, + total_private_repos: 28, + owned_private_repos: 0, + disk_usage: 18833, + collaborators: 0, + two_factor_authentication: false, + plan: { + name: 'free', + space: 976562499, + collaborators: 0, + private_repos: 0, + }, + }; + nock('https://api.github.com') + .get(`/users/michaelmurray6298?access_token=${process.env.TKN}`) + .reply(200, userFetch); + const avatar = await user.userAvatar; + expect(avatar).to.equal(userFetch.avatar_url); + }); + after((done) => { + done(); + }); +}); From ff3470c5132842f06c32d57be33dcf5558394e23 Mon Sep 17 00:00:00 2001 From: Grant Date: Fri, 25 Aug 2017 13:57:44 -0700 Subject: [PATCH 10/23] Fixed Conflicts (#8) * testing dev branch remote * Add OAuth routes to server, user.locals is undefined * Finish OAuth routes, Passing back proper response to req.session.passport * Complete Oauth, must lint code * Clean up linting errors, ready for PR * Add some validation and isAuthenticated route, currently broken * Oauth hookup in progress * Complete OAuth strategy * Clean up commit messages * Add npm install to Dockerfile instructions * Resolve changes as directed minus app.use on line 57 * Add health check route handler * Reserve deployment steps for master branch commits only * Remove express middleware to store user from req to res * Add Env variable assignments for 'development' * Add Env variable assignments for 'development' * Remove package-lock * Add cors handler and move health check middleware * Refactor env variable assignments * Fix linting --- .DS_Store | Bin 0 -> 6148 bytes index.js | 77 ++++++++++++++++++++++++++++++++++++++++++++++++--- package.json | 70 +++++++++++++++++++++++++--------------------- textfile.txt | 0 4 files changed, 111 insertions(+), 36 deletions(-) create mode 100644 .DS_Store create mode 100644 textfile.txt diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..ec6e71718e93956f60aabf01d44338d5c0b70bee GIT binary patch literal 6148 zcmeHKOHRW;47J-XD#4;lmUD&PAgaO%dH|4`3Kk8m1ld-(3kT?FxCIAb$$Pf>R0M>C zgb=c&ndkA?lgW!R9*c-Bx@Imi6OkzzQK<|F&4W{;aGn6w*0_*Xw$ex^n}LP?qKSJy zl^fgjTHfz}Ew`Ji`Es>wcii}Be;^5;`nKD;Zo0db$iw03o)KU9HsAK$UBB&N{K)T= zk_;pR$v`rY4E%@z~KV+O`PoH75O zF12y{!uKug6K@Ekd_NuMv& ZF<%Atj$DOy3kT*!zzE4M8TbVTo&j%WHO&A3 literal 0 HcmV?d00001 diff --git a/index.js b/index.js index 7c1341f..0661657 100644 --- a/index.js +++ b/index.js @@ -1,15 +1,68 @@ const express = require('express'); const bodyParser = require('body-parser'); const graphqlHTTP = require('express-graphql'); -const cors = require('cors'); const root = require('./src/resolvers/RootResolver'); const schema = require('./src/schema/schema'); +const GitHubStrategy = require('passport-github2').Strategy; +const passport = require('passport'); +const partials = require('express-partials'); +const session = require('express-session'); +const cors = require('cors'); const app = express(); + const PORT = process.env.PORT || 8000; -app.use(bodyParser.json()); +function urlPath() { + if (process.env.NODE_ENV === 'development') { + return 'http://localhost:3000/'; + } + return 'http://someLiveURL.com/'; +} + +app.use(partials()); app.use(cors()); +app.use(bodyParser.json()); +app.use(bodyParser.urlencoded({ extended: true })); + +app.use(session({ + secret: process.env.SECRET, + keys: [process.env.SESSION_KEY1, process.env.SESSION_KEY2], + resave: false, + saveUninitialized: false, +})); +app.use( + '/graphql', + graphqlHTTP({ + schema, + rootValue: root, + graphiql: true, + }), +); + +app.use(passport.initialize()); +app.use(passport.session()); +passport.serializeUser((user, done) => { + done(null, user); +}); + +passport.deserializeUser((obj, done) => { + done(null, obj); +}); + +passport.use(new GitHubStrategy({ + clientID: process.env.GITHUB_CLIENT_ID, + clientSecret: process.env.GITHUB_CLIENT_SECRET, + callbackURL: process.env.NODE_ENV === 'development' ? process.env.LOCAL_CALLBACK_URL : 'https:deployed_site.com', +}, + ((accessToken, refreshToken, profile, done) => { + process.env.TKN = accessToken; + process.nextTick(() => + done(null, profile), + ); + }), +)); + app.use( '/graphql', @@ -21,11 +74,27 @@ app.use( ); -// This handler is for the health checking from the load balancer +app.get('/auth/github', + passport.authenticate('github', { scope: ['user:email', 'read:org', 'notifications', 'repo'] }), +); + +app.get('/auth/github/callback', + passport.authenticate('github', { failureRedirect: '/' }), + /* eslint-disable no-underscore-dangle */ + (req, res) => { + res.cookie('userName', req.session.passport.user._json.login, { + httpOnly: false, + }); + res.cookie('isAuth', 'true', { + httpOnly: false, + }); + + res.redirect(urlPath()); + }, +); app.use('/', (req, res) => { res.sendStatus(200); }); - app.use((req, res) => { res.sendStatus(404); }); diff --git a/package.json b/package.json index d7fa8f3..3de4f47 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { - "name": "", - "version": "1.0.0", - "description": "", - "main": "index.js", + "name": "", + "version": "1.0.2", + "description": "", + "main": "index.js", "scripts": { "test": "scripts/test", "production-test": "scripts/production-test", @@ -13,32 +13,38 @@ "production-lint": "scripts/production-lint", "start": "node index.js" }, - "author": "", - "license": "MIT", - "dependencies": { - "body-parser": "1.17.2", - "cors": "2.8.4", - "dotenv": "4.0.0", - "es6-promise": "4.1.1", - "eslint": "4.3.0", - "eslint-config-airbnb-base": "11.3.1", - "eslint-plugin-import": "2.7.0", - "express": "4.15.3", - "express-graphql": "0.6.7", - "graphql": "0.10.5", - "graphql-tools": "1.1.0", - "isomorphic-fetch": "2.2.1", - "nock": "9.0.14", - "node-fetch": "1.7.1", - "nodemon": "1.11.0", - "whatwg-fetch": "2.0.3" - }, - "devDependencies": { - "babel-register": "6.24.1", - "chai": "4.1.0", - "mocha": "3.4.2", - "nock": "9.0.14", - "sinon": "2.4.1", - "sinon-chai": "2.12.0" - } + "author": "", + "license": "MIT", + "dependencies": { + "body-parser": "1.17.2", + "cors": "2.8.4", + "dotenv": "4.0.0", + "ejs": "2.5.7", + "es6-promise": "4.1.1", + "eslint": "4.3.0", + "eslint-config-airbnb-base": "11.3.1", + "eslint-plugin-import": "2.7.0", + "express": "4.15.3", + "express-graphql": "0.6.7", + "express-partials": "0.3.0", + "express-session": "1.15.2", + "graphql": "0.10.5", + "graphql-tools": "1.1.0", + "isomorphic-fetch": "2.2.1", + "method-override": "2.3.5", + "nock": "9.0.14", + "node-fetch": "1.7.1", + "nodemon": "1.11.0", + "passport": "0.3.2", + "passport-github2": "0.1.10", + "whatwg-fetch": "2.0.3" + }, + "devDependencies": { + "babel-register": "6.24.1", + "chai": "4.1.0", + "mocha": "3.4.2", + "nock": "9.0.14", + "sinon": "2.4.1", + "sinon-chai": "2.12.0" + } } diff --git a/textfile.txt b/textfile.txt new file mode 100644 index 0000000..e69de29 From 90b1e8a9d04696a446e8b94b1a67b2888267e476 Mon Sep 17 00:00:00 2001 From: Josh Wyatt Date: Fri, 8 Sep 2017 14:42:30 -0700 Subject: [PATCH 11/23] Add env util (#15) * Write script for production start * Install @databraid/env-util as a dependency --- package.json | 21 +++++++++++---------- scripts/production-start | 7 +++++++ 2 files changed, 18 insertions(+), 10 deletions(-) create mode 100755 scripts/production-start diff --git a/package.json b/package.json index 3de4f47..f1ab0c3 100644 --- a/package.json +++ b/package.json @@ -3,19 +3,20 @@ "version": "1.0.2", "description": "", "main": "index.js", - "scripts": { - "test": "scripts/test", - "production-test": "scripts/production-test", - "dev": "scripts/dev", - "up": "scripts/up", - "down": "scripts/down", - "lint": "scripts/lint", - "production-lint": "scripts/production-lint", - "start": "node index.js" - }, + "scripts": { + "test": "scripts/test", + "production-test": "scripts/production-test", + "dev": "scripts/dev", + "up": "scripts/up", + "down": "scripts/down", + "lint": "scripts/lint", + "production-lint": "scripts/production-lint", + "start": "scripts/production-start" + }, "author": "", "license": "MIT", "dependencies": { + "@databraid/env-util": "1.1.2", "body-parser": "1.17.2", "cors": "2.8.4", "dotenv": "4.0.0", diff --git a/scripts/production-start b/scripts/production-start new file mode 100755 index 0000000..714e8b7 --- /dev/null +++ b/scripts/production-start @@ -0,0 +1,7 @@ +#! /usr/bin/env sh + +# This script is run as the default command INSIDE the container +# and therefore does not need to issue commands via `docker-compose` + +./node_modules/@databraid/env-util/index.js --bucket databraid --key gihub-api +node index.js From d9d3e4171006f6308df0eb3ee31c1613b985984e Mon Sep 17 00:00:00 2001 From: joshwyatt Date: Fri, 8 Sep 2017 15:04:11 -0700 Subject: [PATCH 12/23] Fix typo --- scripts/production-start | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/production-start b/scripts/production-start index 714e8b7..cdec1e4 100755 --- a/scripts/production-start +++ b/scripts/production-start @@ -3,5 +3,5 @@ # This script is run as the default command INSIDE the container # and therefore does not need to issue commands via `docker-compose` -./node_modules/@databraid/env-util/index.js --bucket databraid --key gihub-api +./node_modules/@databraid/env-util/index.js --bucket databraid --key github-api node index.js From faa00496a3d650dd13312aec922e3e3477eb3afd Mon Sep 17 00:00:00 2001 From: Grant Date: Tue, 12 Sep 2017 15:08:34 -0700 Subject: [PATCH 13/23] Logout Feature (#18) * testing dev branch remote * Added OAuth routes to server, user.locals is undefined * Finished OAuth routes, Passing back proper response to req.session.passport * Completed Oauth, must lint code * Cleaned up linting errors, ready for PR * Added some validation and isAuthenticated route, currently broken * Delete PackageLock Is ronan right? * Fixed * Finish Logout route * Lint code * Update PR --- docker-compose.yml | 2 +- index.js | 22 ++++++++++++++++------ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 724828a..a361831 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,4 +8,4 @@ services: - .:/app command: npm run dev ports: - - 8000:8000 + - 8002:8000 diff --git a/index.js b/index.js index 0661657..7cb7ff4 100644 --- a/index.js +++ b/index.js @@ -4,14 +4,19 @@ const graphqlHTTP = require('express-graphql'); const root = require('./src/resolvers/RootResolver'); const schema = require('./src/schema/schema'); const GitHubStrategy = require('passport-github2').Strategy; +const session = require('express-session'); const passport = require('passport'); const partials = require('express-partials'); -const session = require('express-session'); const cors = require('cors'); const app = express(); - +/* eslint-disable no-unused-vars */ const PORT = process.env.PORT || 8000; +const GITHUB_CLIENT_ID = process.env.GITHUB_CLIENT_ID; +const GITHUB_CLIENT_SECRET = process.env.GITHUB_CLIENT_SECRET; +const PRODUCTION_CALLBACK_URL = process.env.PRODUCTION_CALLBACK_URL; +const LOCAL_CALLBACK_URL = process.env.LOCAL_CALLBACK_URL; + function urlPath() { if (process.env.NODE_ENV === 'development') { @@ -20,7 +25,8 @@ function urlPath() { return 'http://someLiveURL.com/'; } -app.use(partials()); + +app.use('/', partials()); app.use(cors()); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); @@ -53,7 +59,7 @@ passport.deserializeUser((obj, done) => { passport.use(new GitHubStrategy({ clientID: process.env.GITHUB_CLIENT_ID, clientSecret: process.env.GITHUB_CLIENT_SECRET, - callbackURL: process.env.NODE_ENV === 'development' ? process.env.LOCAL_CALLBACK_URL : 'https:deployed_site.com', + callbackURL: process.env.NODE_ENV === 'development' ? process.env.LOCAL_CALLBACK_URL : process.env.PRODUCTION_CALLBACK_URL, }, ((accessToken, refreshToken, profile, done) => { process.env.TKN = accessToken; @@ -85,13 +91,17 @@ app.get('/auth/github/callback', res.cookie('userName', req.session.passport.user._json.login, { httpOnly: false, }); - res.cookie('isAuth', 'true', { + res.cookie('githubAccessToken', process.env.TKN, { httpOnly: false, }); - res.redirect(urlPath()); }, ); +app.get('/logout', (req, res) => { + res.clearCookie('githubAccessToken'); + res.clearCookie('userName'); + res.redirect(`${process.env.FRONT_END_URL}`); +}); app.use('/', (req, res) => { res.sendStatus(200); }); From f1b0dc003f51021051149fcc4333122e336e8347 Mon Sep 17 00:00:00 2001 From: joshwyatt Date: Tue, 12 Sep 2017 16:12:33 -0700 Subject: [PATCH 14/23] Run push and deploy steps on dev commits --- codeship-steps.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/codeship-steps.yml b/codeship-steps.yml index 5deb2e2..54e2622 100644 --- a/codeship-steps.yml +++ b/codeship-steps.yml @@ -3,13 +3,10 @@ - service: github-api command: npm run production-test - service: github-api - tag: "master" type: push image_name: databraiddb/github-api encrypted_dockercfg_path: dockercfg.encrypted - service: awsdeployment - tag: "master" command: aws ecs register-task-definition --cli-input-json file:///deploy/tasks/github-api.json - service: awsdeployment - tag: "master" command: aws ecs update-service --cluster databraid-cluster --service github-api-service --task-definition github-api From dbc366573b8ddbdef832cc44ef71241aaee6d4da Mon Sep 17 00:00:00 2001 From: Josh Wyatt Date: Wed, 13 Sep 2017 13:51:11 -0700 Subject: [PATCH 15/23] Remove redundant route handler --- index.js | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/index.js b/index.js index 7cb7ff4..040fa5c 100644 --- a/index.js +++ b/index.js @@ -37,6 +37,7 @@ app.use(session({ resave: false, saveUninitialized: false, })); + app.use( '/graphql', graphqlHTTP({ @@ -69,17 +70,6 @@ passport.use(new GitHubStrategy({ }), )); - -app.use( - '/graphql', - graphqlHTTP({ - schema, - rootValue: root, - graphiql: true, - }), -); - - app.get('/auth/github', passport.authenticate('github', { scope: ['user:email', 'read:org', 'notifications', 'repo'] }), ); From c7461d8735ef474ebc0037a7e84786710c39e39e Mon Sep 17 00:00:00 2001 From: Michael Murray Date: Thu, 14 Sep 2017 15:23:26 -0700 Subject: [PATCH 16/23] Add isPR field to Issue type (#19) * Add file structure * Build file structure * Complete User resolver * Add formatting * Add formatting * Initial Schema refactor * Complete User and Org Resolver * Initial issues model * Complete Repo Resolver and Model * Add Issue to schema * Complete issues model-resolver * Initial pullrequest-model * Add fetchPullRequest to repo * Complete pullrequest model and resolver * Complete milestone model and resolver * Refactor schema and user model * Complete Org model test * Complete User model test * Complete Issue model test * Organize code structure * Complete Milestone model test * Initial repos model test * Refactor Org model test * Complete Repo model test * Refactor User model test * Resolve linting errors * Refactor model format * Remove 'it' from tests * Complete root resolver test * Complete models refactor * Refactor root resolver test for new variable names * Format tests * Complete PullRequest tests * Fix PR issues * Format schema * Format RootResolver * Refactor Orgs and Org model to match new schema layout * Refactor Repos model to match new schema layout * Refactor User and Issue model to match new schema layout * Refactor Repos and Repo to match new schema layout * Remove faulty tests * Remove unused lines from gitignore * Complete CI/CD integration files * Edit filenames * Edit .gitignore * Edit .gitignore * Edit .gitignore * Add AWS key * Fix schema error * Add task role * Add isPR field to Issue type * Remove package-lock.json --- index.js | 12 ++++++------ src/models/Issue.js | 9 ++++++++- src/schema/schema.js | 1 + 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/index.js b/index.js index 040fa5c..a1d5599 100644 --- a/index.js +++ b/index.js @@ -62,12 +62,12 @@ passport.use(new GitHubStrategy({ clientSecret: process.env.GITHUB_CLIENT_SECRET, callbackURL: process.env.NODE_ENV === 'development' ? process.env.LOCAL_CALLBACK_URL : process.env.PRODUCTION_CALLBACK_URL, }, - ((accessToken, refreshToken, profile, done) => { - process.env.TKN = accessToken; - process.nextTick(() => - done(null, profile), - ); - }), +((accessToken, refreshToken, profile, done) => { + process.env.TKN = accessToken; + process.nextTick(() => + done(null, profile), + ); +}), )); app.get('/auth/github', diff --git a/src/models/Issue.js b/src/models/Issue.js index 34b3dcf..8124237 100644 --- a/src/models/Issue.js +++ b/src/models/Issue.js @@ -1,4 +1,5 @@ -/* eslint-disable no-param-reassign */ +/* eslint-disable no-param-reassign, no-prototype-builtins */ + const Label = require('./Label'); function getAssignee(assignee) { @@ -32,6 +33,12 @@ class Issue { get label() { return this.labels.map(label => new Label(label)); } + get isPR() { + if (this.issue.hasOwnProperty('pull_request')) { + return true; + } + return false; + } } module.exports = Issue; diff --git a/src/schema/schema.js b/src/schema/schema.js index c24c38b..f2d6ee0 100644 --- a/src/schema/schema.js +++ b/src/schema/schema.js @@ -46,6 +46,7 @@ const schema = buildSchema(` assignee: String assigneeAvatar: String labels: [Label] + isPR: Boolean! } type Label { From f6985a199a8dbe28a8543f9cf0351dc9f7c35e69 Mon Sep 17 00:00:00 2001 From: joshwyatt Date: Tue, 19 Sep 2017 16:02:40 -0700 Subject: [PATCH 17/23] Lint index.js --- index.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/index.js b/index.js index a1d5599..040fa5c 100644 --- a/index.js +++ b/index.js @@ -62,12 +62,12 @@ passport.use(new GitHubStrategy({ clientSecret: process.env.GITHUB_CLIENT_SECRET, callbackURL: process.env.NODE_ENV === 'development' ? process.env.LOCAL_CALLBACK_URL : process.env.PRODUCTION_CALLBACK_URL, }, -((accessToken, refreshToken, profile, done) => { - process.env.TKN = accessToken; - process.nextTick(() => - done(null, profile), - ); -}), + ((accessToken, refreshToken, profile, done) => { + process.env.TKN = accessToken; + process.nextTick(() => + done(null, profile), + ); + }), )); app.get('/auth/github', From b61ba981b3f36c63b11c0bf2cbc11d1109fd67ef Mon Sep 17 00:00:00 2001 From: Josh Wyatt Date: Tue, 19 Sep 2017 16:11:44 -0700 Subject: [PATCH 18/23] Add Codeship status badge --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 6864852..f512c57 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +[ ![Codeship Status for databraid-dashboard/github-api](https://app.codeship.com/projects/b1fbc110-60f4-0135-cb3b-76a002477897/status?branch=master)](https://app.codeship.com/projects/239611) + # Databraid API Starter Repo Without Postgres Use this repo as a starter repo for developing API servers without Postgres From d699c3c5d28955ca5b9f4409d51ef5939b9368d0 Mon Sep 17 00:00:00 2001 From: Josh Wyatt Date: Tue, 19 Sep 2017 16:48:25 -0700 Subject: [PATCH 19/23] Add production endpoint (#21) * Create update URL environmental variable * Add Codeship status badge --- index.js | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/index.js b/index.js index 040fa5c..698245b 100644 --- a/index.js +++ b/index.js @@ -16,15 +16,7 @@ const GITHUB_CLIENT_ID = process.env.GITHUB_CLIENT_ID; const GITHUB_CLIENT_SECRET = process.env.GITHUB_CLIENT_SECRET; const PRODUCTION_CALLBACK_URL = process.env.PRODUCTION_CALLBACK_URL; const LOCAL_CALLBACK_URL = process.env.LOCAL_CALLBACK_URL; - - -function urlPath() { - if (process.env.NODE_ENV === 'development') { - return 'http://localhost:3000/'; - } - return 'http://someLiveURL.com/'; -} - +const REDIRECT_URL = process.env.REDIRECT_URL; app.use('/', partials()); app.use(cors()); @@ -84,13 +76,13 @@ app.get('/auth/github/callback', res.cookie('githubAccessToken', process.env.TKN, { httpOnly: false, }); - res.redirect(urlPath()); + res.redirect(REDIRECT_URL); }, ); app.get('/logout', (req, res) => { res.clearCookie('githubAccessToken'); res.clearCookie('userName'); - res.redirect(`${process.env.FRONT_END_URL}`); + res.redirect(REDIRECT_URL); }); app.use('/', (req, res) => { res.sendStatus(200); From 32bf8115c178ebbadb0fe77874d30a72d2453bd6 Mon Sep 17 00:00:00 2001 From: Josh Wyatt Date: Wed, 20 Sep 2017 11:00:55 -0700 Subject: [PATCH 20/23] Add morgan logging (#22) --- index.js | 2 ++ package.json | 1 + 2 files changed, 3 insertions(+) diff --git a/index.js b/index.js index 698245b..376057c 100644 --- a/index.js +++ b/index.js @@ -8,6 +8,7 @@ const session = require('express-session'); const passport = require('passport'); const partials = require('express-partials'); const cors = require('cors'); +const morgan = require('morgan'); const app = express(); /* eslint-disable no-unused-vars */ @@ -18,6 +19,7 @@ const PRODUCTION_CALLBACK_URL = process.env.PRODUCTION_CALLBACK_URL; const LOCAL_CALLBACK_URL = process.env.LOCAL_CALLBACK_URL; const REDIRECT_URL = process.env.REDIRECT_URL; +app.use(morgan('combined')); app.use('/', partials()); app.use(cors()); app.use(bodyParser.json()); diff --git a/package.json b/package.json index f1ab0c3..f305e92 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "graphql-tools": "1.1.0", "isomorphic-fetch": "2.2.1", "method-override": "2.3.5", + "morgan": "1.8.2", "nock": "9.0.14", "node-fetch": "1.7.1", "nodemon": "1.11.0", From 2cad1eb11b8c731474607c2347cfc2dcf64e1a63 Mon Sep 17 00:00:00 2001 From: Grant Date: Fri, 22 Sep 2017 13:31:32 -0700 Subject: [PATCH 21/23] Update cookie assignment (#24) --- index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 376057c..a4ae81c 100644 --- a/index.js +++ b/index.js @@ -72,7 +72,7 @@ app.get('/auth/github/callback', passport.authenticate('github', { failureRedirect: '/' }), /* eslint-disable no-underscore-dangle */ (req, res) => { - res.cookie('userName', req.session.passport.user._json.login, { + res.cookie('githubUserName', req.session.passport.user._json.login, { httpOnly: false, }); res.cookie('githubAccessToken', process.env.TKN, { @@ -83,7 +83,7 @@ app.get('/auth/github/callback', ); app.get('/logout', (req, res) => { res.clearCookie('githubAccessToken'); - res.clearCookie('userName'); + res.clearCookie('githubUserName'); res.redirect(REDIRECT_URL); }); app.use('/', (req, res) => { From 86e9a9658a030eb105806a727fd8504989bdcda7 Mon Sep 17 00:00:00 2001 From: joshwyatt Date: Fri, 22 Sep 2017 15:21:10 -0700 Subject: [PATCH 22/23] Add branch tagging to codeship steps --- codeship-steps.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/codeship-steps.yml b/codeship-steps.yml index 54e2622..863442a 100644 --- a/codeship-steps.yml +++ b/codeship-steps.yml @@ -1,12 +1,17 @@ - service: github-api command: npm run production-lint + tag: dev - service: github-api command: npm run production-test + tag: dev - service: github-api type: push image_name: databraiddb/github-api encrypted_dockercfg_path: dockercfg.encrypted + tag: master - service: awsdeployment command: aws ecs register-task-definition --cli-input-json file:///deploy/tasks/github-api.json + tag: master - service: awsdeployment command: aws ecs update-service --cluster databraid-cluster --service github-api-service --task-definition github-api + tag: master From 02f90e238625b4575b8f3358e1d420696b9173cc Mon Sep 17 00:00:00 2001 From: Josh Wyatt Date: Wed, 27 Sep 2017 12:50:04 -0700 Subject: [PATCH 23/23] Production cookies (#28) * Dev (#17) * Refactor schema and models (#4) * Add file structure * Build file structure * Complete User resolver * Add formatting * Add formatting * Initial Schema refactor * Complete User and Org Resolver * Initial issues model * Complete Repo Resolver and Model * Add Issue to schema * Complete issues model-resolver * Initial pullrequest-model * Add fetchPullRequest to repo * Complete pullrequest model and resolver * Complete milestone model and resolver * Refactor schema and user model * Complete Org model test * Complete User model test * Complete Issue model test * Organize code structure * Complete Milestone model test * Initial repos model test * Refactor Org model test * Complete Repo model test * Refactor User model test * Resolve linting errors * Refactor model format * Remove 'it' from tests * Complete root resolver test * Complete models refactor * Refactor root resolver test for new variable names * Format tests * Complete PullRequest tests * Refactor Orgs and Org model to match new schema layout * Refactor Repos model to match new schema layout * Refactor User and Issue model to match new schema layout * Refactor Repos and Repo to match new schema layout * Remove faulty tests * Remove unused lines from gitignore * Add Label model and remove package-lock.json (#5) * Add file structure * Build file structure * Complete User resolver * Add formatting * Add formatting * Initial Schema refactor * Complete User and Org Resolver * Initial issues model * Complete Repo Resolver and Model * Add Issue to schema * Complete issues model-resolver * Initial pullrequest-model * Add fetchPullRequest to repo * Complete pullrequest model and resolver * Complete milestone model and resolver * Refactor schema and user model * Complete Org model test * Complete User model test * Complete Issue model test * Organize code structure * Complete Milestone model test * Initial repos model test * Refactor Org model test * Complete Repo model test * Refactor User model test * Resolve linting errors * Refactor model format * Remove 'it' from tests * Complete root resolver test * Complete models refactor * Refactor root resolver test for new variable names * Format tests * Complete PullRequest tests * Refactor Orgs and Org model to match new schema layout * Refactor Repos model to match new schema layout * Refactor User and Issue model to match new schema layout * Refactor Repos and Repo to match new schema layout * Remove faulty tests * Remove unused lines from gitignore * Add Label model * Add file structure * Build file structure * Complete User resolver * Add formatting * Add formatting * Initial Schema refactor * Complete User and Org Resolver * Initial issues model * Complete Repo Resolver and Model * Add Issue to schema * Initial pullrequest-model * Add fetchPullRequest to repo * Complete pullrequest model and resolver * Complete milestone model and resolver * Refactor schema and user model * Complete Org model test * Complete User model test * Complete Issue model test * Organize code structure * Complete Milestone model test * Initial repos model test * Refactor Org model test * Complete Repo model test * Refactor User model test * Resolve linting errors * Refactor model format * Remove 'it' from tests * Complete root resolver test * Complete models refactor * Refactor root resolver test for new variable names * Format tests * Complete PullRequest tests * Refactor Orgs and Org model to match new schema layout * Refactor Repos model to match new schema layout * Refactor User and Issue model to match new schema layout * Refactor Repos and Repo to match new schema layout * Remove faulty tests * Remove unused lines from gitignore * Add Label model * Rebase merge conflicts * Remove package-lock.json * Remove duplicate file * Initial AWS configuration (#9) * Add file structure * Build file structure * Complete User resolver * Add formatting * Add formatting * Initial Schema refactor * Complete User and Org Resolver * Initial issues model * Complete Repo Resolver and Model * Add Issue to schema * Complete issues model-resolver * Initial pullrequest-model * Add fetchPullRequest to repo * Complete pullrequest model and resolver * Complete milestone model and resolver * Refactor schema and user model * Complete Org model test * Complete User model test * Complete Issue model test * Organize code structure * Complete Milestone model test * Initial repos model test * Refactor Org model test * Complete Repo model test * Refactor User model test * Resolve linting errors * Refactor model format * Remove 'it' from tests * Complete root resolver test * Complete models refactor * Refactor root resolver test for new variable names * Format tests * Complete PullRequest tests * Fix PR issues * Format schema * Format RootResolver * Refactor Orgs and Org model to match new schema layout * Refactor Repos model to match new schema layout * Refactor User and Issue model to match new schema layout * Refactor Repos and Repo to match new schema layout * Remove faulty tests * Remove unused lines from gitignore * Complete CI/CD integration files * Edit filenames * Edit .gitignore * Edit .gitignore * Edit .gitignore * Add AWS key * Fix schema error * Add task role * Add npm install to Dockerfile instructions * Add image name to build service as * Add health check route handler * Reserve deployment steps for master branch commits only * Add cors handler and move health check middleware * Refactor testing (#14) * Add file structure * Build file structure * Complete User resolver * Add formatting * Add formatting * Initial Schema refactor * Complete User and Org Resolver * Initial issues model * Complete Repo Resolver and Model * Add Issue to schema * Complete issues model-resolver * Initial pullrequest-model * Add fetchPullRequest to repo * Complete pullrequest model and resolver * Complete milestone model and resolver * Refactor schema and user model * Complete Org model test * Complete User model test * Complete Issue model test * Organize code structure * Complete Milestone model test * Initial repos model test * Refactor Org model test * Complete Repo model test * Refactor User model test * Resolve linting errors * Refactor model format * Remove 'it' from tests * Complete root resolver test * Complete models refactor * Refactor root resolver test for new variable names * Format tests * Complete PullRequest tests * Refactor Orgs and Org model to match new schema layout * Refactor Repos model to match new schema layout * Refactor User and Issue model to match new schema layout * Refactor Repos and Repo to match new schema layout * Remove faulty tests * Remove unused lines from gitignore * Add Label model * Add file structure * Build file structure * Complete User resolver * Add formatting * Add formatting * Initial Schema refactor * Complete User and Org Resolver * Initial issues model * Complete Repo Resolver and Model * Add Issue to schema * Initial pullrequest-model * Add fetchPullRequest to repo * Complete pullrequest model and resolver * Complete milestone model and resolver * Refactor schema and user model * Complete Org model test * Complete User model test * Complete Issue model test * Organize code structure * Complete Milestone model test * Initial repos model test * Refactor Org model test * Complete Repo model test * Refactor User model test * Resolve linting errors * Refactor model format * Remove 'it' from tests * Complete root resolver test * Complete models refactor * Refactor root resolver test for new variable names * Format tests * Complete PullRequest tests * Refactor Orgs and Org model to match new schema layout * Refactor Repos model to match new schema layout * Refactor User and Issue model to match new schema layout * Refactor Repos and Repo to match new schema layout * Remove faulty tests * Remove unused lines from gitignore * Add Label model * Rebase merge conflicts * Remove package-lock.json * Remove duplicate file * Adding CORS in index.js * Clean up methods * Refactor testing * Refactor test for pull request * Remove duplicate file * Fixed Conflicts (#8) * testing dev branch remote * Add OAuth routes to server, user.locals is undefined * Finish OAuth routes, Passing back proper response to req.session.passport * Complete Oauth, must lint code * Clean up linting errors, ready for PR * Add some validation and isAuthenticated route, currently broken * Oauth hookup in progress * Complete OAuth strategy * Clean up commit messages * Add npm install to Dockerfile instructions * Resolve changes as directed minus app.use on line 57 * Add health check route handler * Reserve deployment steps for master branch commits only * Remove express middleware to store user from req to res * Add Env variable assignments for 'development' * Add Env variable assignments for 'development' * Remove package-lock * Add cors handler and move health check middleware * Refactor env variable assignments * Fix linting * Add env util (#15) * Write script for production start * Install @databraid/env-util as a dependency * Fix typo * Dev (#25) * Refactor schema and models (#4) * Add file structure * Build file structure * Complete User resolver * Add formatting * Add formatting * Initial Schema refactor * Complete User and Org Resolver * Initial issues model * Complete Repo Resolver and Model * Add Issue to schema * Complete issues model-resolver * Initial pullrequest-model * Add fetchPullRequest to repo * Complete pullrequest model and resolver * Complete milestone model and resolver * Refactor schema and user model * Complete Org model test * Complete User model test * Complete Issue model test * Organize code structure * Complete Milestone model test * Initial repos model test * Refactor Org model test * Complete Repo model test * Refactor User model test * Resolve linting errors * Refactor model format * Remove 'it' from tests * Complete root resolver test * Complete models refactor * Refactor root resolver test for new variable names * Format tests * Complete PullRequest tests * Refactor Orgs and Org model to match new schema layout * Refactor Repos model to match new schema layout * Refactor User and Issue model to match new schema layout * Refactor Repos and Repo to match new schema layout * Remove faulty tests * Remove unused lines from gitignore * Add Label model and remove package-lock.json (#5) * Add file structure * Build file structure * Complete User resolver * Add formatting * Add formatting * Initial Schema refactor * Complete User and Org Resolver * Initial issues model * Complete Repo Resolver and Model * Add Issue to schema * Complete issues model-resolver * Initial pullrequest-model * Add fetchPullRequest to repo * Complete pullrequest model and resolver * Complete milestone model and resolver * Refactor schema and user model * Complete Org model test * Complete User model test * Complete Issue model test * Organize code structure * Complete Milestone model test * Initial repos model test * Refactor Org model test * Complete Repo model test * Refactor User model test * Resolve linting errors * Refactor model format * Remove 'it' from tests * Complete root resolver test * Complete models refactor * Refactor root resolver test for new variable names * Format tests * Complete PullRequest tests * Refactor Orgs and Org model to match new schema layout * Refactor Repos model to match new schema layout * Refactor User and Issue model to match new schema layout * Refactor Repos and Repo to match new schema layout * Remove faulty tests * Remove unused lines from gitignore * Add Label model * Add file structure * Build file structure * Complete User resolver * Add formatting * Add formatting * Initial Schema refactor * Complete User and Org Resolver * Initial issues model * Complete Repo Resolver and Model * Add Issue to schema * Initial pullrequest-model * Add fetchPullRequest to repo * Complete pullrequest model and resolver * Complete milestone model and resolver * Refactor schema and user model * Complete Org model test * Complete User model test * Complete Issue model test * Organize code structure * Complete Milestone model test * Initial repos model test * Refactor Org model test * Complete Repo model test * Refactor User model test * Resolve linting errors * Refactor model format * Remove 'it' from tests * Complete root resolver test * Complete models refactor * Refactor root resolver test for new variable names * Format tests * Complete PullRequest tests * Refactor Orgs and Org model to match new schema layout * Refactor Repos model to match new schema layout * Refactor User and Issue model to match new schema layout * Refactor Repos and Repo to match new schema layout * Remove faulty tests * Remove unused lines from gitignore * Add Label model * Rebase merge conflicts * Remove package-lock.json * Remove duplicate file * Initial AWS configuration (#9) * Add file structure * Build file structure * Complete User resolver * Add formatting * Add formatting * Initial Schema refactor * Complete User and Org Resolver * Initial issues model * Complete Repo Resolver and Model * Add Issue to schema * Complete issues model-resolver * Initial pullrequest-model * Add fetchPullRequest to repo * Complete pullrequest model and resolver * Complete milestone model and resolver * Refactor schema and user model * Complete Org model test * Complete User model test * Complete Issue model test * Organize code structure * Complete Milestone model test * Initial repos model test * Refactor Org model test * Complete Repo model test * Refactor User model test * Resolve linting errors * Refactor model format * Remove 'it' from tests * Complete root resolver test * Complete models refactor * Refactor root resolver test for new variable names * Format tests * Complete PullRequest tests * Fix PR issues * Format schema * Format RootResolver * Refactor Orgs and Org model to match new schema layout * Refactor Repos model to match new schema layout * Refactor User and Issue model to match new schema layout * Refactor Repos and Repo to match new schema layout * Remove faulty tests * Remove unused lines from gitignore * Complete CI/CD integration files * Edit filenames * Edit .gitignore * Edit .gitignore * Edit .gitignore * Add AWS key * Fix schema error * Add task role * Add npm install to Dockerfile instructions * Add image name to build service as * Add health check route handler * Reserve deployment steps for master branch commits only * Add cors handler and move health check middleware * Refactor testing (#14) * Add file structure * Build file structure * Complete User resolver * Add formatting * Add formatting * Initial Schema refactor * Complete User and Org Resolver * Initial issues model * Complete Repo Resolver and Model * Add Issue to schema * Complete issues model-resolver * Initial pullrequest-model * Add fetchPullRequest to repo * Complete pullrequest model and resolver * Complete milestone model and resolver * Refactor schema and user model * Complete Org model test * Complete User model test * Complete Issue model test * Organize code structure * Complete Milestone model test * Initial repos model test * Refactor Org model test * Complete Repo model test * Refactor User model test * Resolve linting errors * Refactor model format * Remove 'it' from tests * Complete root resolver test * Complete models refactor * Refactor root resolver test for new variable names * Format tests * Complete PullRequest tests * Refactor Orgs and Org model to match new schema layout * Refactor Repos model to match new schema layout * Refactor User and Issue model to match new schema layout * Refactor Repos and Repo to match new schema layout * Remove faulty tests * Remove unused lines from gitignore * Add Label model * Add file structure * Build file structure * Complete User resolver * Add formatting * Add formatting * Initial Schema refactor * Complete User and Org Resolver * Initial issues model * Complete Repo Resolver and Model * Add Issue to schema * Initial pullrequest-model * Add fetchPullRequest to repo * Complete pullrequest model and resolver * Complete milestone model and resolver * Refactor schema and user model * Complete Org model test * Complete User model test * Complete Issue model test * Organize code structure * Complete Milestone model test * Initial repos model test * Refactor Org model test * Complete Repo model test * Refactor User model test * Resolve linting errors * Refactor model format * Remove 'it' from tests * Complete root resolver test * Complete models refactor * Refactor root resolver test for new variable names * Format tests * Complete PullRequest tests * Refactor Orgs and Org model to match new schema layout * Refactor Repos model to match new schema layout * Refactor User and Issue model to match new schema layout * Refactor Repos and Repo to match new schema layout * Remove faulty tests * Remove unused lines from gitignore * Add Label model * Rebase merge conflicts * Remove package-lock.json * Remove duplicate file * Adding CORS in index.js * Clean up methods * Refactor testing * Refactor test for pull request * Remove duplicate file * Fixed Conflicts (#8) * testing dev branch remote * Add OAuth routes to server, user.locals is undefined * Finish OAuth routes, Passing back proper response to req.session.passport * Complete Oauth, must lint code * Clean up linting errors, ready for PR * Add some validation and isAuthenticated route, currently broken * Oauth hookup in progress * Complete OAuth strategy * Clean up commit messages * Add npm install to Dockerfile instructions * Resolve changes as directed minus app.use on line 57 * Add health check route handler * Reserve deployment steps for master branch commits only * Remove express middleware to store user from req to res * Add Env variable assignments for 'development' * Add Env variable assignments for 'development' * Remove package-lock * Add cors handler and move health check middleware * Refactor env variable assignments * Fix linting * Add env util (#15) * Write script for production start * Install @databraid/env-util as a dependency * Fix typo * Logout Feature (#18) * testing dev branch remote * Added OAuth routes to server, user.locals is undefined * Finished OAuth routes, Passing back proper response to req.session.passport * Completed Oauth, must lint code * Cleaned up linting errors, ready for PR * Added some validation and isAuthenticated route, currently broken * Delete PackageLock Is ronan right? * Fixed * Finish Logout route * Lint code * Update PR * Run push and deploy steps on dev commits * Remove redundant route handler * Add isPR field to Issue type (#19) * Add file structure * Build file structure * Complete User resolver * Add formatting * Add formatting * Initial Schema refactor * Complete User and Org Resolver * Initial issues model * Complete Repo Resolver and Model * Add Issue to schema * Complete issues model-resolver * Initial pullrequest-model * Add fetchPullRequest to repo * Complete pullrequest model and resolver * Complete milestone model and resolver * Refactor schema and user model * Complete Org model test * Complete User model test * Complete Issue model test * Organize code structure * Complete Milestone model test * Initial repos model test * Refactor Org model test * Complete Repo model test * Refactor User model test * Resolve linting errors * Refactor model format * Remove 'it' from tests * Complete root resolver test * Complete models refactor * Refactor root resolver test for new variable names * Format tests * Complete PullRequest tests * Fix PR issues * Format schema * Format RootResolver * Refactor Orgs and Org model to match new schema layout * Refactor Repos model to match new schema layout * Refactor User and Issue model to match new schema layout * Refactor Repos and Repo to match new schema layout * Remove faulty tests * Remove unused lines from gitignore * Complete CI/CD integration files * Edit filenames * Edit .gitignore * Edit .gitignore * Edit .gitignore * Add AWS key * Fix schema error * Add task role * Add isPR field to Issue type * Remove package-lock.json * Lint index.js * Add Codeship status badge * Add production endpoint (#21) * Create update URL environmental variable * Add Codeship status badge * Add morgan logging (#22) * Update cookie assignment (#24) * Add branch tagging to codeship steps * Add description in readme (#26) * Add file structure * Build file structure * Complete User resolver * Add formatting * Add formatting * Initial Schema refactor * Complete User and Org Resolver * Initial issues model * Complete Repo Resolver and Model * Add Issue to schema * Complete issues model-resolver * Initial pullrequest-model * Add fetchPullRequest to repo * Complete pullrequest model and resolver * Complete milestone model and resolver * Refactor schema and user model * Complete Org model test * Complete User model test * Complete Issue model test * Organize code structure * Complete Milestone model test * Initial repos model test * Refactor Org model test * Complete Repo model test * Refactor User model test * Resolve linting errors * Refactor model format * Remove 'it' from tests * Complete root resolver test * Complete models refactor * Refactor root resolver test for new variable names * Format tests * Complete PullRequest tests * Refactor Orgs and Org model to match new schema layout * Refactor Repos model to match new schema layout * Refactor User and Issue model to match new schema layout * Refactor Repos and Repo to match new schema layout * Remove faulty tests * Remove unused lines from gitignore * Refactor schema and models (#4) * Add file structure * Build file structure * Complete User resolver * Add formatting * Add formatting * Initial Schema refactor * Complete User and Org Resolver * Initial issues model * Complete Repo Resolver and Model * Add Issue to schema * Complete issues model-resolver * Initial pullrequest-model * Add fetchPullRequest to repo * Complete pullrequest model and resolver * Complete milestone model and resolver * Refactor schema and user model * Complete Org model test * Complete User model test * Complete Issue model test * Organize code structure * Complete Milestone model test * Initial repos model test * Refactor Org model test * Complete Repo model test * Refactor User model test * Resolve linting errors * Refactor model format * Remove 'it' from tests * Complete root resolver test * Complete models refactor * Refactor root resolver test for new variable names * Format tests * Complete PullRequest tests * Refactor Orgs and Org model to match new schema layout * Refactor Repos model to match new schema layout * Refactor User and Issue model to match new schema layout * Refactor Repos and Repo to match new schema layout * Remove faulty tests * Remove unused lines from gitignore * Add Label model * Add file structure * Build file structure * Complete User resolver * Add formatting * Add formatting * Initial Schema refactor * Complete User and Org Resolver * Initial issues model * Complete Repo Resolver and Model * Add Issue to schema * Initial pullrequest-model * Add fetchPullRequest to repo * Complete pullrequest model and resolver * Complete milestone model and resolver * Refactor schema and user model * Complete Org model test * Complete User model test * Complete Issue model test * Organize code structure * Complete Milestone model test * Initial repos model test * Refactor Org model test * Complete Repo model test * Refactor User model test * Resolve linting errors * Refactor model format * Remove 'it' from tests * Complete root resolver test * Complete models refactor * Refactor root resolver test for new variable names * Format tests * Complete PullRequest tests * Refactor Orgs and Org model to match new schema layout * Refactor Repos model to match new schema layout * Refactor User and Issue model to match new schema layout * Refactor Repos and Repo to match new schema layout * Remove faulty tests * Remove unused lines from gitignore * Add Label model * Rebase merge conflicts * Remove package-lock.json * Remove duplicate file * Add Label model and remove package-lock.json (#5) * Add file structure * Build file structure * Complete User resolver * Add formatting * Add formatting * Initial Schema refactor * Complete User and Org Resolver * Initial issues model * Complete Repo Resolver and Model * Add Issue to schema * Complete issues model-resolver * Initial pullrequest-model * Add fetchPullRequest to repo * Complete pullrequest model and resolver * Complete milestone model and resolver * Refactor schema and user model * Complete Org model test * Complete User model test * Complete Issue model test * Organize code structure * Complete Milestone model test * Initial repos model test * Refactor Org model test * Complete Repo model test * Refactor User model test * Resolve linting errors * Refactor model format * Remove 'it' from tests * Complete root resolver test * Complete models refactor * Refactor root resolver test for new variable names * Format tests * Complete PullRequest tests * Refactor Orgs and Org model to match new schema layout * Refactor Repos model to match new schema layout * Refactor User and Issue model to match new schema layout * Refactor Repos and Repo to match new schema layout * Remove faulty tests * Remove unused lines from gitignore * Add Label model * Add file structure * Build file structure * Complete User resolver * Add formatting * Add formatting * Initial Schema refactor * Complete User and Org Resolver * Initial issues model * Complete Repo Resolver and Model * Add Issue to schema * Initial pullrequest-model * Add fetchPullRequest to repo * Complete pullrequest model and resolver * Complete milestone model and resolver * Refactor schema and user model * Complete Org model test * Complete User model test * Complete Issue model test * Organize code structure * Complete Milestone model test * Initial repos model test * Refactor Org model test * Complete Repo model test * Refactor User model test * Resolve linting errors * Refactor model format * Remove 'it' from tests * Complete root resolver test * Complete models refactor * Refactor root resolver test for new variable names * Format tests * Complete PullRequest tests * Refactor Orgs and Org model to match new schema layout * Refactor Repos model to match new schema layout * Refactor User and Issue model to match new schema layout * Refactor Repos and Repo to match new schema layout * Remove faulty tests * Remove unused lines from gitignore * Add Label model * Rebase merge conflicts * Remove package-lock.json * Remove duplicate file * Initial AWS configuration (#9) * Add file structure * Build file structure * Complete User resolver * Add formatting * Add formatting * Initial Schema refactor * Complete User and Org Resolver * Initial issues model * Complete Repo Resolver and Model * Add Issue to schema * Complete issues model-resolver * Initial pullrequest-model * Add fetchPullRequest to repo * Complete pullrequest model and resolver * Complete milestone model and resolver * Refactor schema and user model * Complete Org model test * Complete User model test * Complete Issue model test * Organize code structure * Complete Milestone model test * Initial repos model test * Refactor Org model test * Complete Repo model test * Refactor User model test * Resolve linting errors * Refactor model format * Remove 'it' from tests * Complete root resolver test * Complete models refactor * Refactor root resolver test for new variable names * Format tests * Complete PullRequest tests * Fix PR issues * Format schema * Format RootResolver * Refactor Orgs and Org model to match new schema layout * Refactor Repos model to match new schema layout * Refactor User and Issue model to match new schema layout * Refactor Repos and Repo to match new schema layout * Remove faulty tests * Remove unused lines from gitignore * Complete CI/CD integration files * Edit filenames * Edit .gitignore * Edit .gitignore * Edit .gitignore * Add AWS key * Fix schema error * Add task role * Add npm install to Dockerfile instructions * Add image name to build service as * Add health check route handler * Reserve deployment steps for master branch commits only * Add cors handler and move health check middleware * Refactor testing (#14) * Add file structure * Build file structure * Complete User resolver * Add formatting * Add formatting * Initial Schema refactor * Complete User and Org Resolver * Initial issues model * Complete Repo Resolver and Model * Add Issue to schema * Complete issues model-resolver * Initial pullrequest-model * Add fetchPullRequest to repo * Complete pullrequest model and resolver * Complete milestone model and resolver * Refactor schema and user model * Complete Org model test * Complete User model test * Complete Issue model test * Organize code structure * Complete Milestone model test * Initial repos model test * Refactor Org model test * Complete Repo model test * Refactor User model test * Resolve linting errors * Refactor model format * Remove 'it' from tests * Complete root resolver test * Complete models refactor * Refactor root resolver test for new variable names * Format tests * Complete PullRequest tests * Refactor Orgs and Org model to match new schema layout * Refactor Repos model to match new schema layout * Refactor User and Issue model to match new schema layout * Refactor Repos and Repo to match new schema layout * Remove faulty tests * Remove unused lines from gitignore * Add Label model * Add file structure * Build file structure * Complete User resolver * Add formatting * Add formatting * Initial Schema refactor * Complete User and Org Resolver * Initial issues model * Complete Repo Resolver and Model * Add Issue to schema * Initial pullrequest-model * Add fetchPullRequest to repo * Complete pullrequest model and resolver * Complete milestone model and resolver * Refactor schema and user model * Complete Org model test * Complete User model test * Complete Issue model test * Organize code structure * Complete Milestone model test * Initial repos model test * Refactor Org model test * Complete Repo model test * Refactor User model test * Resolve linting errors * Refactor model format * Remove 'it' from tests * Complete root resolver test * Complete models refactor * Refactor root resolver test for new variable names * Format tests * Complete PullRequest tests * Refactor Orgs and Org model to match new schema layout * Refactor Repos model to match new schema layout * Refactor User and Issue model to match new schema layout * Refactor Repos and Repo to match new schema layout * Remove faulty tests * Remove unused lines from gitignore * Add Label model * Rebase merge conflicts * Remove package-lock.json * Remove duplicate file * Adding CORS in index.js * Clean up methods * Refactor testing * Refactor test for pull request * Remove duplicate file * Fixed Conflicts (#8) * testing dev branch remote * Add OAuth routes to server, user.locals is undefined * Finish OAuth routes, Passing back proper response to req.session.passport * Complete Oauth, must lint code * Clean up linting errors, ready for PR * Add some validation and isAuthenticated route, currently broken * Oauth hookup in progress * Complete OAuth strategy * Clean up commit messages * Add npm install to Dockerfile instructions * Resolve changes as directed minus app.use on line 57 * Add health check route handler * Reserve deployment steps for master branch commits only * Remove express middleware to store user from req to res * Add Env variable assignments for 'development' * Add Env variable assignments for 'development' * Remove package-lock * Add cors handler and move health check middleware * Refactor env variable assignments * Fix linting * Clean up refactor * Delete graphiql * Add env util (#15) * Write script for production start * Install @databraid/env-util as a dependency * Fix typo * Logout Feature (#18) * testing dev branch remote * Added OAuth routes to server, user.locals is undefined * Finished OAuth routes, Passing back proper response to req.session.passport * Completed Oauth, must lint code * Cleaned up linting errors, ready for PR * Added some validation and isAuthenticated route, currently broken * Delete PackageLock Is ronan right? * Fixed * Finish Logout route * Lint code * Update PR * Run push and deploy steps on dev commits * Remove linting errors * Fix readme * Change Github to GitHub * Add Usage text to README (#27) * Update title and add Docker link * Remove repo starter text * Give option to pass in domain for cookies as environmental variable --- README.md | 8 +++++--- index.js | 8 +++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index f512c57..1419fef 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,14 @@ [ ![Codeship Status for databraid-dashboard/github-api](https://app.codeship.com/projects/b1fbc110-60f4-0135-cb3b-76a002477897/status?branch=master)](https://app.codeship.com/projects/239611) -# Databraid API Starter Repo Without Postgres +# Databraid GitHub API -Use this repo as a starter repo for developing API servers without Postgres +## Description + +GraphQL endpoints housed in an Express server to access GitHub's API v3 and serve information to the Databraid GitHub Widget. Authentication happens with Oauth2 where you will be redirected to a GitHub sign in screen to allow Databraid access to some information about your GitHub account. ## Usage -Before beginning make sure you have Docker installed and running, then do: +Before beginning make sure you have [Docker](https://www.docker.com/) installed and running, then do: ``` npm i diff --git a/index.js b/index.js index a4ae81c..fd92967 100644 --- a/index.js +++ b/index.js @@ -37,7 +37,6 @@ app.use( graphqlHTTP({ schema, rootValue: root, - graphiql: true, }), ); @@ -74,21 +73,24 @@ app.get('/auth/github/callback', (req, res) => { res.cookie('githubUserName', req.session.passport.user._json.login, { httpOnly: false, + domain: process.env.DOMAIN_FOR_COOKIES || 'localhost', }); res.cookie('githubAccessToken', process.env.TKN, { httpOnly: false, + domain: process.env.DOMAIN_FOR_COOKIES || 'localhost', }); res.redirect(REDIRECT_URL); }, ); app.get('/logout', (req, res) => { - res.clearCookie('githubAccessToken'); - res.clearCookie('githubUserName'); + res.clearCookie('githubAccessToken', { domain: process.env.DOMAIN_FOR_COOKIES || 'localhost' }); + res.clearCookie('githubUserName', { domain: process.env.DOMAIN_FOR_COOKIES || 'localhost' }); res.redirect(REDIRECT_URL); }); app.use('/', (req, res) => { res.sendStatus(200); }); + app.use((req, res) => { res.sendStatus(404); });