From d5d6a5eaed052938c28bc0cc84c527306dfb3d10 Mon Sep 17 00:00:00 2001 From: "Chung, Kuan-Wu" <521chung@gmail.com> Date: Thu, 1 Feb 2018 14:53:23 +0800 Subject: [PATCH 1/3] new readme --- README.md | 60 ++++++++++++++++++++++++++++++++++++++++++--------- images/1.png | Bin 0 -> 28459 bytes images/2.png | Bin 0 -> 43921 bytes images/3.png | Bin 0 -> 37906 bytes 4 files changed, 50 insertions(+), 10 deletions(-) create mode 100644 images/1.png create mode 100644 images/2.png create mode 100644 images/3.png diff --git a/README.md b/README.md index e9c1c61..e4d573e 100644 --- a/README.md +++ b/README.md @@ -6,21 +6,61 @@ npm install ``` ## 準備 Google Calendar Api 服務帳戶金鑰 -將 ```private_key.json``` 放置於專案目錄 +1. 新增專案 +2. 前往[API和服務](https://console.cloud.google.com/apis/credentials) + +![API和服務](./images/1.PNG) + +3. 建立服務帳戶金鑰 + +![API和服務](./images/2.PNG) + +4. 將私密金鑰存至電腦中 +![API和服務](./images/3.PNG) + ## 範例 +將上一步金鑰內 ```client_email``` 與 ```private_key``` 複製到 default.js 中 + +./config/default.js +```js +module.exports = { + CLIENT_EMAIL: 'your client email', + PRIVATE_KEY: 'your private key' +}; ``` -let gCalHelper = new GCalHelper(); - -gCalHelper.listEvents( - moment().startOf('month'), // start(default: start of month) - moment().endOf('month'), // end(default: end of month) - function(events) { // callback function - // got events - } -); +app.js +```js +const config = require('./config/default'); + +let gCalHelper = new GCalHelper({ + CLIENT_EMAIL: config.CLIENT_EMAIL, + PRIVATE_KEY: config.PRIVATE_KEY +}); + +gCalHelper.listEvents({ + start: '2018-01-01', + end: '2018-01-31' +}).then(function(events){ + // handle events... +}).catch(function(err){ + // handle error... +}); ``` +## API + +### listEvents(params) +回傳:[Events Resouce](https://developers.google.com/google-apps/calendar/v3/reference/events#resource) + +參數: + +|名稱|型態| +|-|-| +|`start`|`string` / `dateTime`| +|`end`|`string` / `dateTime`| + + ## 測試 使用 `npm test` 測試 diff --git a/images/1.png b/images/1.png new file mode 100644 index 0000000000000000000000000000000000000000..384310d99c6bfdb88a6e1379652265c463d7fde5 GIT binary patch literal 28459 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 W^x=O`aU}x2AsGpI@$_qY5C1Qp3{9E< literal 0 HcmV?d00001 diff --git a/images/3.png b/images/3.png new file mode 100644 index 0000000000000000000000000000000000000000..136ba4d82251738bb713300de79acc86f7c66f76 GIT binary patch literal 37906 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 WeuqyS0QABTbi}|^pK#Fb+W!Lb*82?r literal 0 HcmV?d00001 From ec8c96dc0876a6d4b0300d387c49c33b79590ce6 Mon Sep 17 00:00:00 2001 From: kwchung <521Chung@gmail.com> Date: Thu, 1 Feb 2018 15:06:31 +0800 Subject: [PATCH 2/3] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e4d573e..3177942 100644 --- a/README.md +++ b/README.md @@ -9,14 +9,14 @@ npm install 1. 新增專案 2. 前往[API和服務](https://console.cloud.google.com/apis/credentials) -![API和服務](./images/1.PNG) +![API和服務](images/1.png) 3. 建立服務帳戶金鑰 -![API和服務](./images/2.PNG) +![API和服務](images/2.png) 4. 將私密金鑰存至電腦中 -![API和服務](./images/3.PNG) +![API和服務](images/3.png) ## 範例 @@ -65,4 +65,4 @@ gCalHelper.listEvents({ 使用 `npm test` 測試 ## License -MIT \ No newline at end of file +MIT From 8916fb21cce1ac17a9dc6f292289e75be3d1aad5 Mon Sep 17 00:00:00 2001 From: "Chung, Kuan-Wu" <521chung@gmail.com> Date: Fri, 2 Feb 2018 16:32:23 +0800 Subject: [PATCH 3/3] use airbnb style --- .eslintrc.js | 3 + .gitignore | 5 +- __tests__/index.js | 90 ++-- config/default.js | 4 + index.js | 130 +++--- package-lock.json | 1030 ++++++++++++++++++++++++++++++++++---------- package.json | 4 +- 7 files changed, 932 insertions(+), 334 deletions(-) create mode 100644 .eslintrc.js create mode 100644 config/default.js diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..a40b6c8 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,3 @@ +module.exports = { + "extends": "airbnb-base", +}; \ No newline at end of file diff --git a/.gitignore b/.gitignore index a025561..a5ff531 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ node_modules -private_key.json \ No newline at end of file +private_key.json +secret +config/test.js +app.js \ No newline at end of file diff --git a/__tests__/index.js b/__tests__/index.js index d047294..8dfba6b 100644 --- a/__tests__/index.js +++ b/__tests__/index.js @@ -1,42 +1,68 @@ -var GCalHelper = require("./../index"); -var moment = require("moment"); +const GCalHelper = require('./../index'); +const config = require('../config/test.js'); -let gcalHelper = new GCalHelper(); +const gCalHelper = new GCalHelper({ + CLIENT_EMAIL: config.CLIENT_EMAIL, + PRIVATE_KEY: config.PRIVATE_KEY, +}); + +const event = { + summary: 'Google I/O 2015', + location: '800 Howard St., San Francisco, CA 94103', + description: 'A chance to hear more about Google\'s developer products.', + start: { + dateTime: '2015-05-28T09:00:00-07:00', + timeZone: 'America/Los_Angeles', + }, + end: { + dateTime: '2015-05-28T17:00:00-07:00', + timeZone: 'America/Los_Angeles', + }, + recurrence: [ + 'RRULE:FREQ=DAILY;COUNT=2', + ], + attendees: [ + { email: 'lpage@example.com' }, + { email: 'sbrin@example.com' }, + ], + reminders: { + useDefault: false, + overrides: [ + { method: 'email', minutes: 24 * 60 }, + { method: 'popup', minutes: 10 }, + ], + }, +}; -test("Got start and end", () => { - gcalHelper.listEvents( - moment([2018, 0, 26, 0, 0, 0]), - moment([2018, 0, 26, 23, 59, 59]) - ); +test('Events: insert [Got an event]', async () => { + await gCalHelper.addEvents(event) + .then((res) => { + expect(res).toMatchObject(event); + }); }); -test("Got start", () => { - gcalHelper.listEvents( - moment([2018, 0, 26, 0, 0, 0]) - ); +test('Events: list [Got start and end]', async () => { + await gCalHelper + .listEvents({ + start: '2015-05-01', + end: '2015-05-31', + }); }); -test("Got end", () => { - gcalHelper.listEvents( - undefined, - moment([2018, 0, 26, 23, 59, 59]) - ); +test('Events: list [Got start]', async () => { + await gCalHelper + .listEvents({ + start: '2015-05-01', + }); }); -test("Miss both", () => { - gcalHelper.listEvents(); +test('Events: list [Got end]', async () => { + await gCalHelper + .listEvents({ + end: '2015-05-31', + }); }); -// gcalHelper.addEvents({ -// start: { -// dateTime: moment() -// .add(4, "h") -// .format() -// }, -// end: { -// dateTime: moment() -// .add(5, "h") -// .format() -// }, -// summary: "Dinner" -// }); +test('Events: list [Miss both]', async () => { + await gCalHelper.listEvents(); +}); diff --git a/config/default.js b/config/default.js new file mode 100644 index 0000000..cd82f92 --- /dev/null +++ b/config/default.js @@ -0,0 +1,4 @@ +module.exports = { + CLIENT_EMAIL: '', + PRIVATE_KEY: '', +}; diff --git a/index.js b/index.js index c256e58..ead68ef 100644 --- a/index.js +++ b/index.js @@ -1,74 +1,72 @@ -var fs = require("fs"); -var moment = require("moment"); -var google = require("googleapis"); -var googleAuth = require("google-auth-library"); -var privatekey = require("./private_key.json"); +const moment = require('moment'); +const google = require('googleapis'); + +const calendar = google.calendar('v3'); class GCalHelper { - constructor() { - this.jwtClient = new google.auth.JWT( - privatekey.client_email, - null, - privatekey.private_key, - ["https://www.googleapis.com/auth/calendar"] - ); - //authenticate request - this.jwtClient.authorize(function(err, tokens) { - if (err) { - console.log(err); - return; - } else { - // console.log("Successfully connected!"); - } - }); - } + constructor({ CLIENT_EMAIL, PRIVATE_KEY }) { + this.jwtClient = new google.auth.JWT( + CLIENT_EMAIL, + null, + PRIVATE_KEY, + ['https://www.googleapis.com/auth/calendar'], + ); + this.jwtClient.authorize((err, tokens) => { + if (err) { + return new Error(err); + } + return tokens; + }); + } - addEvents(event, callback) { - let calendar = google.calendar("v3"); - calendar.events.insert( - { - auth: this.jwtClient, - calendarId: "primary", - resource: event - }, - function(err, response) { - if (err) { - console.log("The API returned an error: " + err); - return; - } - callback(response); - } - ); - } + async addEvents(resource) { + return new Promise((resolve, reject) => { + calendar.events.insert({ + auth: this.jwtClient, + calendarId: 'primary', + resource, + }, (err, response) => { + if (err) { + reject(new Error(`Error occured while adding event: ${err}`)); + } + resolve(response.data); + }); + }); + } - /** - * Return list of events between given search range. - * - * @param {Date} start Start of search range. - * @param {Date} end End of search range. - * @param {Function} callback Callback function. - */ - listEvents(start, end, callback) { - if (typeof start === "undefined") start = moment().startOf("month"); - if (typeof end === "undefined") end = moment().endOf("month"); + async deleteEvent(eventId) { + return new Promise((resolve, reject) => { + calendar.events.delete({ + auth: this.jwtClient, + calendarId: 'primary', + eventId, + }, (err, response) => { + if (err) { + reject(new Error(`Error occured while deleting event: ${err}`)); + } + resolve(response); + }); + }); + } - let calendar = google.calendar("v3"); - calendar.events.list( - { - auth: this.jwtClient, - calendarId: "primary", - timeMin: moment(start).toDate(), - timeMax: moment(end).toDate() - }, - function(err, response) { - if (err) { - console.log("The API returned an error: " + err); - } - var events = response.data.items; - if (typeof callback === "function") callback(events); - } - ); - } + async listEvents({ + start = moment().startOf('month'), + end = moment().endOf('month'), + } = {}) { + return new Promise((resolve, reject) => { + calendar.events.list({ + auth: this.jwtClient, + calendarId: 'primary', + timeMin: moment(start).toDate(), + timeMax: moment(end).toDate(), + }, (err, response) => { + if (err) { + reject(new Error(`Error occured while show event: ${err}`)); + } + resolve(response.data.items); + }); + }); + } } module.exports = GCalHelper; diff --git a/package-lock.json b/package-lock.json index c0a1e3b..5ec7fe8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,9 +5,9 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.0.0-beta.38", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.38.tgz", - "integrity": "sha512-JNHofQND7Iiuy3f6RXSillN1uBe87DAp+1ktsBfSxfL3xWeGFyJC9jH5zu2zs7eqVGp2qXWvJZFiJIwOYnaCQw==", + "version": "7.0.0-beta.39", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.39.tgz", + "integrity": "sha512-PConL+YIK9BgNUWWC2q4fbltj1g475TofpNVNivSypcAAKElfpSS1cv7MrpLYRG8TzZvwcVu9M30hLA/WAp1HQ==", "dev": true, "requires": { "chalk": "2.3.0", @@ -22,10 +22,9 @@ "dev": true }, "acorn": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.3.0.tgz", - "integrity": "sha512-Yej+zOJ1Dm/IMZzzj78OntP/r3zHEaKcyNoU2lAaxPtrseM6rF0xwqoz5Q5ysAiED9hTjI2hgtvLXitlCN1/Ug==", - "dev": true + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.4.0.tgz", + "integrity": "sha512-bkLTrtPfRASTxDXFaih7SbeYSsQ8MjrqCQKMrgZ4Hc7kYI//WVU6rDTAIqVrAudjgMFQEGthYfodtaw8dTRJrg==" }, "acorn-globals": { "version": "4.1.0", @@ -33,7 +32,22 @@ "integrity": "sha512-KjZwU26uG3u6eZcfGbTULzFcsoz6pegNKtHPksZPOUsiKo5bUmiBPa38FuHZ/Eun+XYh/JCCkS9AS3Lu4McQOQ==", "dev": true, "requires": { - "acorn": "5.3.0" + "acorn": "5.4.0" + } + }, + "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": { @@ -47,6 +61,11 @@ "json-schema-traverse": "0.3.1" } }, + "ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=" + }, "align-text": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", @@ -67,20 +86,17 @@ "ansi-escapes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", - "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", - "dev": true + "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==" }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, "ansi-styles": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true, "requires": { "color-convert": "1.9.1" } @@ -108,7 +124,6 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "dev": true, "requires": { "sprintf-js": "1.0.3" } @@ -134,6 +149,19 @@ "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", "dev": true }, + "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", @@ -143,8 +171,7 @@ "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" }, "asn1": { "version": "0.2.3", @@ -204,7 +231,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, "requires": { "chalk": "1.1.3", "esutils": "2.0.2", @@ -214,38 +240,24 @@ "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, "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" - }, - "dependencies": { - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - } } }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, "requires": { "ansi-regex": "2.1.1" } @@ -253,8 +265,7 @@ "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" } } }, @@ -283,6 +294,17 @@ "private": "0.1.8", "slash": "1.0.0", "source-map": "0.5.7" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } } }, "babel-generator": { @@ -427,6 +449,17 @@ "globals": "9.18.0", "invariant": "2.2.2", "lodash": "4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } } }, "babel-types": { @@ -450,8 +483,7 @@ "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "base64url": { "version": "2.0.0", @@ -484,7 +516,6 @@ "version": "1.1.8", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "dev": true, "requires": { "balanced-match": "1.0.0", "concat-map": "0.0.1" @@ -536,6 +567,21 @@ "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true }, + "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" + }, + "dependencies": { + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=" + } + } + }, "callsites": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", @@ -569,19 +615,41 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", - "dev": true, "requires": { "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", "supports-color": "4.5.0" } }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=" + }, "ci-info": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.2.tgz", "integrity": "sha512-uTGIPNx/nSpBdsF6xnseRXLLtfr9VLqkz8ZqHXr3Y7b6SftyRxBGjwMtJj1OhNbmlc1wZzLNAlAcvyIiE8a6ZA==", "dev": true }, + "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.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" + }, "cliui": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", @@ -618,7 +686,6 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -626,8 +693,7 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "combined-stream": { "version": "1.0.5", @@ -640,7 +706,22 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "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.3", + "typedarray": "0.0.6" + } + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", "dev": true }, "content-type-parser": { @@ -670,7 +751,6 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, "requires": { "lru-cache": "4.1.1", "shebang-command": "1.2.0", @@ -719,9 +799,9 @@ } }, "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "requires": { "ms": "2.0.0" } @@ -735,8 +815,7 @@ "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=", - "dev": true + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" }, "default-require-extensions": { "version": "1.0.0", @@ -757,6 +836,27 @@ "object-keys": "1.0.11" } }, + "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.2" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -783,6 +883,14 @@ "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==", "dev": true }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "requires": { + "esutils": "2.0.2" + } + }, "domexception": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", @@ -846,8 +954,7 @@ "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=", - "dev": true + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "escodegen": { "version": "1.9.0", @@ -870,23 +977,298 @@ } } }, + "eslint": { + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.16.0.tgz", + "integrity": "sha512-YVXV4bDhNoHHcv0qzU4Meof7/P26B4EuaktMi5L1Tnt52Aov85KmYA8c5D+xyZr/BkhvwUqr011jDSD/QTULxg==", + "requires": { + "ajv": "5.5.2", + "babel-code-frame": "6.26.0", + "chalk": "2.3.0", + "concat-stream": "1.6.0", + "cross-spawn": "5.1.0", + "debug": "3.1.0", + "doctrine": "2.1.0", + "eslint-scope": "3.7.1", + "eslint-visitor-keys": "1.0.0", + "espree": "3.5.2", + "esquery": "1.0.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "functional-red-black-tree": "1.0.1", + "glob": "7.1.2", + "globals": "11.3.0", + "ignore": "3.3.7", + "imurmurhash": "0.1.4", + "inquirer": "3.3.0", + "is-resolvable": "1.1.0", + "js-yaml": "3.10.0", + "json-stable-stringify-without-jsonify": "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": "7.0.0", + "progress": "2.0.0", + "require-uncached": "1.0.3", + "semver": "5.5.0", + "strip-ansi": "4.0.0", + "strip-json-comments": "2.0.1", + "table": "4.0.2", + "text-table": "0.2.0" + }, + "dependencies": { + "globals": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.3.0.tgz", + "integrity": "sha512-kkpcKNlmQan9Z5ZmgqKH/SMbSmjxQ7QjyNqfXVc8VJcoBV2UEg+sxQD15GQofGRh2hfpwUb70VC31DR7Rq5Hdw==" + } + } + }, + "eslint-config-airbnb-base": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-12.1.0.tgz", + "integrity": "sha512-/vjm0Px5ZCpmJqnjIzcFb9TKZrKWz0gnuG/7Gfkt0Db1ELJR51xkZth+t14rYdqWgX836XbuxtArbIHlVhbLBA==", + "dev": true, + "requires": { + "eslint-restricted-globals": "0.1.1" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", + "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", + "dev": true, + "requires": { + "debug": "2.6.9", + "resolve": "1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "resolve": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", + "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "dev": true, + "requires": { + "path-parse": "1.0.5" + } + } + } + }, + "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==", + "dev": true, + "requires": { + "debug": "2.6.9", + "pkg-dir": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "1.1.2" + } + } + } + }, + "eslint-plugin-import": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.8.0.tgz", + "integrity": "sha512-Rf7dfKJxZ16QuTgVv1OYNxkZcsu/hULFnC+e+w0Gzi6jMC3guQoWQgxYxc54IDRinlb6/0v5z/PxxIKmVctN+g==", + "dev": true, + "requires": { + "builtin-modules": "1.1.1", + "contains-path": "0.1.0", + "debug": "2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "0.3.2", + "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.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + } + }, + "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=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "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=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "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=", + "dev": true + }, + "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" + } + }, + "eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==" + }, + "espree": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz", + "integrity": "sha512-sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==", + "requires": { + "acorn": "5.4.0", + "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==", - "dev": true + "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=", - "dev": true + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" }, "exec-sh": { "version": "0.2.1", @@ -955,6 +1337,16 @@ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" }, + "external-editor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", + "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", + "requires": { + "chardet": "0.4.2", + "iconv-lite": "0.4.19", + "tmp": "0.0.33" + } + }, "extglob": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", @@ -982,8 +1374,7 @@ "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, "fb-watchman": { "version": "2.0.0", @@ -994,6 +1385,23 @@ "bser": "2.0.0" } }, + "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.3.0", + "object-assign": "4.1.1" + } + }, "filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", @@ -1032,22 +1440,23 @@ "locate-path": "2.0.0" } }, + "flat-cache": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "requires": { + "circular-json": "0.3.3", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" + } + }, "follow-redirects": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.4.1.tgz", "integrity": "sha512-uxYePVPogtya1ktGnAAXOacnbIuRMB4dkvqeNz2qTtTQsuzSfbDolV+wMMKxAmCx0bLgAKLbBOkjItMbbkR1vg==", "requires": { "debug": "3.1.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - } } }, "for-in": { @@ -1089,8 +1498,7 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { "version": "1.1.3", @@ -2002,6 +2410,11 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "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-caller-file": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", @@ -2026,7 +2439,6 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, "requires": { "fs.realpath": "1.0.0", "inflight": "1.0.6", @@ -2061,16 +2473,36 @@ "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", "dev": true }, + "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" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + }, "google-auth-library": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-0.12.0.tgz", - "integrity": "sha512-79qCXtJ1VweBmmLr4yLq9S4clZB2p5Y+iACvuKk9gu4JitEnPc+bQFmYvtCYehVR44MQzD1J8DVmYW2w677IEw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-1.2.0.tgz", + "integrity": "sha512-s5387wrjf5ZeGpnKRYil2w+VtVbQIC0UJScpZZIgoXtdkdS0PckA7g8ejbh/iu4kJVzWN+Bv9li1IO+FIKrnyw==", "requires": { - "gtoken": "1.2.3", + "axios": "0.17.1", + "gtoken": "2.1.0", "jws": "3.1.4", "lodash.isstring": "4.0.1", - "lodash.merge": "4.6.0", - "request": "2.83.0" + "lru-cache": "4.1.1" } }, "google-oauth-jwt": { @@ -2080,14 +2512,25 @@ "requires": { "debug": "2.6.9", "request": "2.83.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } } }, "google-p12-pem": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-0.1.2.tgz", - "integrity": "sha1-M8RqsCGqc0+gMys5YKmj/8svMXc=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-1.0.0.tgz", + "integrity": "sha512-tqu8IJF307iH8vXQEI5ZhuIk89vAf25rmoyoenckm/zY7Elzm4X/x6OPOk4wa3sRzkA/Y2CkubpvLxSEgIEQcg==", "requires": { - "node-forge": "0.7.1" + "node-forge": "0.7.1", + "pify": "3.0.0" } }, "googleapis": { @@ -2096,62 +2539,16 @@ "integrity": "sha512-hIP2VbwFliL7YHZQRaJrw5+ctunALJUior4KEw0vCYlcDezPnEA+HhTY2oq4I3PCHBKxKwc9xfV37Kkz6e/krw==", "requires": { "async": "2.6.0", - "google-auth-library": "1.1.0", + "google-auth-library": "1.2.0", "qs": "6.5.1", "string-template": "1.0.0", "uuid": "3.2.1" - }, - "dependencies": { - "google-auth-library": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-1.1.0.tgz", - "integrity": "sha512-WgWLwplY8ftublrySvrJYsoJR0eL1TBqG3cxCPInYZmpo2h0aEpCYJBP0Lz43OO0ceMc7BreLghZXXVfrbF/PA==", - "requires": { - "axios": "0.17.1", - "gtoken": "2.1.0", - "jws": "3.1.4", - "lodash.isstring": "4.0.1", - "lru-cache": "4.1.1" - } - }, - "google-p12-pem": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-1.0.0.tgz", - "integrity": "sha512-tqu8IJF307iH8vXQEI5ZhuIk89vAf25rmoyoenckm/zY7Elzm4X/x6OPOk4wa3sRzkA/Y2CkubpvLxSEgIEQcg==", - "requires": { - "node-forge": "0.7.1", - "pify": "3.0.0" - } - }, - "gtoken": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-2.1.0.tgz", - "integrity": "sha512-r/dh/cVgPBWHcskq03KOSDl+L+0Ac0B8VEhpIbnrcsvHSJHdkEtwbC0lOZNxBIqWbM1+HNig8jpuCwKJzCcilg==", - "requires": { - "axios": "0.17.1", - "google-p12-pem": "1.0.0", - "jws": "3.1.4", - "mime": "2.2.0", - "pify": "3.0.0" - } - }, - "mime": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.2.0.tgz", - "integrity": "sha512-0Qz9uF1ATtl8RKJG4VRfOymh7PyEor6NbrI/61lRfuRe4vx9SNATrvAeTj2EWVRKjEQGskrzWkJBBY5NbaVHIA==" - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - } } }, "graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" }, "growly": { "version": "1.3.0", @@ -2160,14 +2557,15 @@ "dev": true }, "gtoken": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-1.2.3.tgz", - "integrity": "sha512-wQAJflfoqSgMWrSBk9Fg86q+sd6s7y6uJhIvvIPz++RElGlMtEqsdAR2oWwZ/WTEtp7P9xFbJRrT976oRgzJ/w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-2.1.0.tgz", + "integrity": "sha512-r/dh/cVgPBWHcskq03KOSDl+L+0Ac0B8VEhpIbnrcsvHSJHdkEtwbC0lOZNxBIqWbM1+HNig8jpuCwKJzCcilg==", "requires": { - "google-p12-pem": "0.1.2", + "axios": "0.17.1", + "google-p12-pem": "1.0.0", "jws": "3.1.4", - "mime": "1.6.0", - "request": "2.83.0" + "mime": "2.2.0", + "pify": "3.0.0" } }, "handlebars": { @@ -2222,11 +2620,18 @@ "function-bind": "1.1.1" } }, + "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=", - "dev": true + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" }, "hawk": { "version": "6.0.2", @@ -2282,8 +2687,12 @@ "iconv-lite": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", - "dev": true + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, + "ignore": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", + "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==" }, "import-local": { "version": "1.0.0", @@ -2298,14 +2707,12 @@ "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "requires": { "once": "1.4.0", "wrappy": "1.0.2" @@ -2314,8 +2721,28 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "requires": { + "ansi-escapes": "3.0.0", + "chalk": "2.3.0", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.1.0", + "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" + } }, "invariant": { "version": "2.2.2", @@ -2412,8 +2839,7 @@ "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=", - "dev": true + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, "is-generator-fn": { "version": "1.0.0", @@ -2439,6 +2865,27 @@ "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.1" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "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", @@ -2451,6 +2898,11 @@ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", "dev": true }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + }, "is-regex": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", @@ -2460,6 +2912,11 @@ "has": "1.0.1" } }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -2486,14 +2943,12 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "isobject": { "version": "2.1.0", @@ -2598,17 +3053,6 @@ "mkdirp": "0.5.1", "rimraf": "2.6.2", "source-map": "0.5.7" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - } } }, "istanbul-reports": { @@ -2718,7 +3162,7 @@ "requires": { "jest-mock": "22.1.0", "jest-util": "22.1.4", - "jsdom": "11.6.1" + "jsdom": "11.6.2" } }, "jest-environment-node": { @@ -2796,7 +3240,7 @@ "integrity": "sha512-kftcoawOeOVUGuGWmMupJt7FGLK1pqOrh02FlJwtImmPGZ2yTWCTx2D+N/g95qD2jCbQ/ntH1goBixhAIIxL+g==", "dev": true, "requires": { - "@babel/code-frame": "7.0.0-beta.38", + "@babel/code-frame": "7.0.0-beta.39", "chalk": "2.3.0", "micromatch": "2.3.11", "slash": "1.0.0", @@ -2941,14 +3385,12 @@ "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" }, "js-yaml": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", - "dev": true, "requires": { "argparse": "1.0.9", "esprima": "4.0.0" @@ -2961,13 +3403,13 @@ "optional": true }, "jsdom": { - "version": "11.6.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.6.1.tgz", - "integrity": "sha512-x1vDo5CQuwsuP0w3kuU04vQdem9Q8apRV2PXp8GeSFQpgtYvSwbcypIbNgRrXu82O4TMroGYSAbu9wyVZHcehw==", + "version": "11.6.2", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.6.2.tgz", + "integrity": "sha512-pAeZhpbSlUp5yQcS6cBQJwkbzmv4tWFaYxHbFVSxzXefqjvtRA851Z5N2P+TguVG9YeUDcgb8pdeVQRJh0XR3Q==", "dev": true, "requires": { "abab": "1.0.4", - "acorn": "5.3.0", + "acorn": "5.4.0", "acorn-globals": "4.1.0", "array-equal": "1.0.0", "browser-process-hrtime": "0.1.2", @@ -3019,6 +3461,11 @@ "jsonify": "0.0.0" } }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" + }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -3109,7 +3556,6 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, "requires": { "prelude-ls": "1.1.2", "type-check": "0.3.2" @@ -3126,6 +3572,14 @@ "pify": "2.3.0", "pinkie-promise": "2.0.1", "strip-bom": "2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } } }, "locate-path": { @@ -3143,16 +3597,17 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" }, + "lodash.cond": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", + "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=", + "dev": true + }, "lodash.isstring": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" }, - "lodash.merge": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.0.tgz", - "integrity": "sha1-aYhLoUSsM/5plzemCG3v+t0PicU=" - }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", @@ -3198,7 +3653,7 @@ "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "dev": true, "requires": { - "mimic-fn": "1.1.0" + "mimic-fn": "1.2.0" } }, "merge": { @@ -3238,9 +3693,9 @@ } }, "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.2.0.tgz", + "integrity": "sha512-0Qz9uF1ATtl8RKJG4VRfOymh7PyEor6NbrI/61lRfuRe4vx9SNATrvAeTj2EWVRKjEQGskrzWkJBBY5NbaVHIA==" }, "mime-db": { "version": "1.30.0", @@ -3256,16 +3711,14 @@ } }, "mimic-fn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", - "dev": true + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, "requires": { "brace-expansion": "1.1.8" } @@ -3273,14 +3726,12 @@ "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, "requires": { "minimist": "0.0.8" } @@ -3295,6 +3746,11 @@ "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.8.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", @@ -3305,8 +3761,7 @@ "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" }, "node-forge": { "version": "0.7.1", @@ -3391,8 +3846,7 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "object-keys": { "version": "1.0.11", @@ -3424,11 +3878,18 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "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.2.0" + } + }, "optimist": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", @@ -3443,7 +3904,6 @@ "version": "0.8.2", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "dev": true, "requires": { "deep-is": "0.1.3", "fast-levenshtein": "2.0.6", @@ -3456,8 +3916,7 @@ "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" } } }, @@ -3481,8 +3940,7 @@ "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=", - "dev": true + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "p-finally": { "version": "1.0.0", @@ -3550,8 +4008,12 @@ "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=", - "dev": true + "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-key": { "version": "2.0.1", @@ -3574,6 +4036,14 @@ "graceful-fs": "4.1.11", "pify": "2.3.0", "pinkie-promise": "2.0.1" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } } }, "performance-now": { @@ -3582,22 +4052,19 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" }, "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true + "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=", - "dev": true, "requires": { "pinkie": "2.0.4" } @@ -3611,6 +4078,11 @@ "find-up": "2.1.0" } }, + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==" + }, "pn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", @@ -3620,8 +4092,7 @@ "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" }, "preserve": { "version": "0.2.0", @@ -3656,8 +4127,12 @@ "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=", - "dev": true + "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=" }, "pseudomap": { "version": "1.0.2", @@ -3761,7 +4236,6 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", @@ -3894,6 +4368,22 @@ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, + "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" + }, + "dependencies": { + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=" + } + } + }, "resolve": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", @@ -3915,6 +4405,15 @@ "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", "dev": true }, + "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" + } + }, "right-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", @@ -3929,11 +4428,31 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "dev": true, "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.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", @@ -3972,8 +4491,7 @@ "semver": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", - "dev": true + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" }, "set-blocking": { "version": "2.0.0", @@ -3985,7 +4503,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, "requires": { "shebang-regex": "1.0.0" } @@ -3993,8 +4510,7 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" }, "shellwords": { "version": "0.1.1", @@ -4005,8 +4521,7 @@ "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "slash": { "version": "1.0.0", @@ -4014,6 +4529,14 @@ "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", "dev": true }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "requires": { + "is-fullwidth-code-point": "2.0.0" + } + }, "sntp": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", @@ -4069,8 +4592,7 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, "sshpk": { "version": "1.13.1", @@ -4117,7 +4639,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", "strip-ansi": "4.0.0" @@ -4127,7 +4648,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, "requires": { "safe-buffer": "5.1.1" } @@ -4141,7 +4661,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, "requires": { "ansi-regex": "3.0.0" }, @@ -4149,8 +4668,7 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" } } }, @@ -4169,11 +4687,15 @@ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, + "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": "4.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "dev": true, "requires": { "has-flag": "2.0.0" } @@ -4184,6 +4706,19 @@ "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", "dev": true }, + "table": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "requires": { + "ajv": "5.5.2", + "ajv-keywords": "2.1.1", + "chalk": "2.3.0", + "lodash": "4.17.4", + "slice-ansi": "1.0.0", + "string-width": "2.1.1" + } + }, "test-exclude": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", @@ -4197,12 +4732,30 @@ "require-main-filename": "1.0.1" } }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + }, "throat": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", "dev": true }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "1.0.2" + } + }, "tmpl": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", @@ -4264,11 +4817,15 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, "requires": { "prelude-ls": "1.1.2" } }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, "uglify-js": { "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", @@ -4312,8 +4869,7 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "util.promisify": { "version": "1.0.0", @@ -4416,7 +4972,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", - "dev": true, "requires": { "isexe": "2.0.0" } @@ -4484,8 +5039,15 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "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": "2.3.0", diff --git a/package.json b/package.json index e9240c1..b8f826c 100644 --- a/package.json +++ b/package.json @@ -9,10 +9,12 @@ "author": "", "license": "ISC", "devDependencies": { + "eslint-config-airbnb-base": "^12.1.0", + "eslint-plugin-import": "^2.8.0", "jest-cli": "^22.1.4" }, "dependencies": { - "google-auth-library": "^0.12.0", + "eslint": "^4.16.0", "googleapis": "^25.0.0", "moment": "^2.20.1", "node-google-calendar": "^1.1.1"