From 16ef5f6eb8cf17f025c870598bf9ef34f7f8023a Mon Sep 17 00:00:00 2001 From: Spyros Ioakeimidis Date: Thu, 5 Oct 2017 14:39:03 +0200 Subject: [PATCH] style(*): format files with prettier --- package.json | 7 +- src/index.js | 17 +- src/resources/appsProduct.js | 1 - src/resources/buttonFeedbackResource.js | 1 - src/resources/buttonsResource.js | 7 +- src/resources/campaignsResource.js | 7 +- src/resources/campaignsResultsResource.js | 1 - src/resources/campaignsStatsResource.js | 1 - src/resources/emailProduct.js | 1 - src/resources/formsFeedbackResource.js | 1 - src/resources/formsResource.js | 7 +- src/resources/inPageFeedbackResource.js | 1 - src/resources/inPageResource.js | 7 +- src/resources/resource.js | 16 +- src/resources/websitesProduct.js | 1 - src/resources/widgetFeedbackResource.js | 1 - src/resources/widgetsResource.js | 7 +- src/signing.js | 46 +- test/index.spec.js | 1 - test/resources/resource.spec.js | 106 ++-- test/signing.spec.js | 91 +-- yarn.lock | 641 +++++++++++++++++++++- 22 files changed, 799 insertions(+), 170 deletions(-) diff --git a/package.json b/package.json index 6098862..a689f53 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "karma-coveralls": "^1.1.2", "karma-jasmine": "^1.0.2", "lint-staged": "^4.2.3", - "prettier": "^1.7.4", + "prettier-eslint-cli": "^4.4.0", "semantic-release": "^6.3.2", "vinyl-source-stream": "^1.1.0", "wallabify": "0.0.14", @@ -43,7 +43,8 @@ "posttest": "npm run lint", "semantic-release": "semantic-release pre && npm publish && semantic-release post", "commit": "git-cz", - "precommit": "lint-staged" + "precommit": "lint-staged", + "format": "prettier-eslint --write --single-quote" }, "repository": { "type": "git", @@ -62,7 +63,7 @@ }, "lint-staged": { "*.js": [ - "prettier --write", + "format", "git add" ] } diff --git a/src/index.js b/src/index.js index ca1a711..d1de0d8 100644 --- a/src/index.js +++ b/src/index.js @@ -8,14 +8,17 @@ const AppsProduct = require('./resources/appsProduct'); * Needs to be instantiated with access and secret keys. */ class Usabilla { - constructor(accessKey, secretKey, options = {}) { - this.config = Object.assign({}, { - protocol: 'https', - host: 'data.usabilla.com', - port: null, - iterator: true - }, options); + this.config = Object.assign( + {}, + { + protocol: 'https', + host: 'data.usabilla.com', + port: null, + iterator: true + }, + options + ); const signatureFactory = new SignatureFactory(accessKey, secretKey); diff --git a/src/resources/appsProduct.js b/src/resources/appsProduct.js index 73f42d5..1d3fb14 100644 --- a/src/resources/appsProduct.js +++ b/src/resources/appsProduct.js @@ -4,7 +4,6 @@ const FormsResource = require('./formsResource'); * Apps product endpoints. */ class AppsProduct { - constructor(base, signatureFactory, config) { const baseUrl = `${base}/apps`; diff --git a/src/resources/buttonFeedbackResource.js b/src/resources/buttonFeedbackResource.js index d9f2f3e..ce83b7c 100644 --- a/src/resources/buttonFeedbackResource.js +++ b/src/resources/buttonFeedbackResource.js @@ -4,7 +4,6 @@ const Resource = require('./resource'); * Websites Buttons feedback resource. */ class ButtonFeedbackResource extends Resource { - constructor(base, signatureFactory, config) { super(`${base}/:id/feedback`, signatureFactory, config); } diff --git a/src/resources/buttonsResource.js b/src/resources/buttonsResource.js index f575b23..6f335fa 100644 --- a/src/resources/buttonsResource.js +++ b/src/resources/buttonsResource.js @@ -5,12 +5,15 @@ const ButtonFeedbackResource = require('./buttonFeedbackResource'); * Websites Buttons resource. */ class ButtonsResource extends Resource { - constructor(base, signatureFactory, config) { const baseUrl = `${base}/button`; super(baseUrl, signatureFactory, config); - this.feedback = new ButtonFeedbackResource(baseUrl, signatureFactory, config); + this.feedback = new ButtonFeedbackResource( + baseUrl, + signatureFactory, + config + ); } } diff --git a/src/resources/campaignsResource.js b/src/resources/campaignsResource.js index 05842de..e9d73cf 100644 --- a/src/resources/campaignsResource.js +++ b/src/resources/campaignsResource.js @@ -6,12 +6,15 @@ const CampaignsStatsResource = require('./campaignsStatsResource'); * Websites Campaigns resource. */ class CampaignsResource extends Resource { - constructor(base, signatureFactory, config) { const baseUrl = `${base}/campaign`; super(baseUrl, signatureFactory, config); - this.results = new CampaignsResultsResource(baseUrl, signatureFactory, config); + this.results = new CampaignsResultsResource( + baseUrl, + signatureFactory, + config + ); this.stats = new CampaignsStatsResource(baseUrl, signatureFactory, config); } } diff --git a/src/resources/campaignsResultsResource.js b/src/resources/campaignsResultsResource.js index e5f1711..9b5f1e2 100644 --- a/src/resources/campaignsResultsResource.js +++ b/src/resources/campaignsResultsResource.js @@ -5,7 +5,6 @@ const Resource = require('./resource'); * This resource provides the responses for a single or all campaigns. */ class CampaignsResultsResource extends Resource { - constructor(base, signatureFactory, config) { const baseUrl = `${base}/:id/results`; super(baseUrl, signatureFactory, config); diff --git a/src/resources/campaignsStatsResource.js b/src/resources/campaignsStatsResource.js index aa0be78..e88618b 100644 --- a/src/resources/campaignsStatsResource.js +++ b/src/resources/campaignsStatsResource.js @@ -5,7 +5,6 @@ const Resource = require('./resource'); * This resource provides the main statistics from a campaign. */ class CampaignsStatsResource extends Resource { - constructor(base, signatureFactory, config) { const baseUrl = `${base}/:id/stats`; super(baseUrl, signatureFactory, config); diff --git a/src/resources/emailProduct.js b/src/resources/emailProduct.js index aa472bc..9ca9f7a 100644 --- a/src/resources/emailProduct.js +++ b/src/resources/emailProduct.js @@ -4,7 +4,6 @@ const WidgetsResource = require('./widgetsResource'); * Email product endpoints. */ class EmailProduct { - constructor(base, signatureFactory, config) { const baseUrl = `${base}/email`; diff --git a/src/resources/formsFeedbackResource.js b/src/resources/formsFeedbackResource.js index db157fe..0d5b18b 100644 --- a/src/resources/formsFeedbackResource.js +++ b/src/resources/formsFeedbackResource.js @@ -4,7 +4,6 @@ const Resource = require('./resource'); * Apps Forms feedback resource. */ class FormsFeedbackResource extends Resource { - constructor(base, signatureFactory, config) { super(`${base}/:id/feedback`, signatureFactory, config); } diff --git a/src/resources/formsResource.js b/src/resources/formsResource.js index adabac5..26dd5db 100644 --- a/src/resources/formsResource.js +++ b/src/resources/formsResource.js @@ -5,12 +5,15 @@ const FormsFeedbackResource = require('./formsFeedbackResource'); * Apps Forms resource. */ class FormsResource extends Resource { - constructor(base, signatureFactory, config) { const baseUrl = `${base}`; super(baseUrl, signatureFactory, config); - this.feedback = new FormsFeedbackResource(baseUrl, signatureFactory, config); + this.feedback = new FormsFeedbackResource( + baseUrl, + signatureFactory, + config + ); } } diff --git a/src/resources/inPageFeedbackResource.js b/src/resources/inPageFeedbackResource.js index 394d378..65322dc 100644 --- a/src/resources/inPageFeedbackResource.js +++ b/src/resources/inPageFeedbackResource.js @@ -4,7 +4,6 @@ const Resource = require('./resource'); * Websites InPage feedback resource. */ class InPageFeedbackResource extends Resource { - constructor(base, signatureFactory, config) { super(`${base}/:id/feedback`, signatureFactory, config); } diff --git a/src/resources/inPageResource.js b/src/resources/inPageResource.js index b094826..674e557 100644 --- a/src/resources/inPageResource.js +++ b/src/resources/inPageResource.js @@ -5,12 +5,15 @@ const InPageFeedbackResource = require('./inPageFeedbackResource'); * Websites InPage resource. */ class InPageResource extends Resource { - constructor(base, signatureFactory, config) { const baseUrl = `${base}/inpage`; super(baseUrl, signatureFactory, config); - this.feedback = new InPageFeedbackResource(baseUrl, signatureFactory, config); + this.feedback = new InPageFeedbackResource( + baseUrl, + signatureFactory, + config + ); } } diff --git a/src/resources/resource.js b/src/resources/resource.js index d2418ee..227f570 100644 --- a/src/resources/resource.js +++ b/src/resources/resource.js @@ -1,5 +1,5 @@ -const https = require("https"); -const packageJson = require("../../package.json"); +const https = require('https'); +const packageJson = require('../../package.json'); /** * Base resource class which takes care of creating the query @@ -10,7 +10,7 @@ class Resource { this.url = url; this.signatureFactory = signatureFactory; this.config = config; - this.str = ""; + this.str = ''; this.queryParams = {}; } @@ -89,22 +89,22 @@ class Resource { return new Promise((resolve, reject) => { https .get(requestOptions, this.handleGetResponse.bind(this, resolve, reject)) - .on("error", this.handleOnError.bind(this, reject)); + .on('error', this.handleOnError.bind(this, reject)); }); } handleGetResponse(resolve, reject, response) { - this.str = ""; + this.str = ''; this.answer = {}; - response.on("data", this.handleOnData.bind(this)); + response.on('data', this.handleOnData.bind(this)); - response.on("end", this.handleOnEnd.bind(this, resolve, reject)); + response.on('end', this.handleOnEnd.bind(this, resolve, reject)); } static getDefaultHeaders(version) { return { - "x-ub-api-client": `Usabilla API Node Client/${version}` + 'x-ub-api-client': `Usabilla API Node Client/${version}` }; } } diff --git a/src/resources/websitesProduct.js b/src/resources/websitesProduct.js index 784276f..1d8f8ec 100644 --- a/src/resources/websitesProduct.js +++ b/src/resources/websitesProduct.js @@ -6,7 +6,6 @@ const InPageResource = require('./inPageResource'); * Websites product endpoints. */ class WebsitesProduct { - constructor(base, signatureFactory, config) { const baseUrl = `${base}/websites`; diff --git a/src/resources/widgetFeedbackResource.js b/src/resources/widgetFeedbackResource.js index 65dc820..e5f43ee 100644 --- a/src/resources/widgetFeedbackResource.js +++ b/src/resources/widgetFeedbackResource.js @@ -4,7 +4,6 @@ const Resource = require('./resource'); * Email Widget feedback resource. */ class WidgetFeedbackResource extends Resource { - constructor(base, signatureFactory, config) { super(`${base}/:id/feedback`, signatureFactory, config); } diff --git a/src/resources/widgetsResource.js b/src/resources/widgetsResource.js index 465fd0a..ec438e3 100644 --- a/src/resources/widgetsResource.js +++ b/src/resources/widgetsResource.js @@ -5,12 +5,15 @@ const WidgetFeedbackResource = require('./widgetFeedbackResource'); * Email Widget resource. */ class WidgetsResource extends Resource { - constructor(base, signatureFactory, config) { const baseUrl = `${base}/button`; super(baseUrl, signatureFactory, config); - this.feedback = new WidgetFeedbackResource(baseUrl, signatureFactory, config); + this.feedback = new WidgetFeedbackResource( + baseUrl, + signatureFactory, + config + ); } } diff --git a/src/signing.js b/src/signing.js index 01716fa..eb998f8 100644 --- a/src/signing.js +++ b/src/signing.js @@ -8,7 +8,6 @@ const crypto = require('crypto'); * - URL + Query parameters */ class SignatureFactory { - constructor(accessKey, secretKey) { this.accessKey = accessKey; this.secretKey = secretKey; @@ -55,10 +54,11 @@ class SignatureFactory { params.sort(); // map params to URL queryParameters - this.queryParameters = Object.keys(params).map(function(k) { - return [params[k], query.params[params[k]]].join('=') - }).join('&'); - + this.queryParameters = Object.keys(params) + .map(function(k) { + return [params[k], query.params[params[k]]].join('='); + }) + .join('&'); } } @@ -71,7 +71,9 @@ class SignatureFactory { delete headers.Authorization; // sort headers alphabetically - return Object.keys(headers).sort().reduce((r, k) => (r[k] = headers[k], r), {}); + return Object.keys(headers) + .sort() + .reduce((r, k) => ((r[k] = headers[k]), r), {}); } /** @@ -80,9 +82,11 @@ class SignatureFactory { */ getCanonicalHeaders() { let headers = this.getHeadersToSign(); - return Object.keys(headers).map(function(k) { - return [k, headers[k] + '\n'].join(':') - }).join(''); + return Object.keys(headers) + .map(function(k) { + return [k, headers[k] + '\n'].join(':'); + }) + .join(''); } /** @@ -111,7 +115,7 @@ class SignatureFactory { this.getSignedHeaders(), SignatureFactory.hash('', 'hex') ].join('\n'); - }; + } stringToSign() { /** @@ -126,10 +130,13 @@ class SignatureFactory { this.dates.shortdate + '/' + 'usbl1_request', SignatureFactory.hash(this.canonicalString(), 'hex') ].join('\n'); - }; + } getSignature() { - const kDate = SignatureFactory.hmac('USBL1' + this.secretKey, this.dates.shortdate); + const kDate = SignatureFactory.hmac( + 'USBL1' + this.secretKey, + this.dates.shortdate + ); const kSigning = SignatureFactory.hmac(kDate, 'usbl1_request'); return SignatureFactory.hmac(kSigning, this.stringToSign(), 'hex'); @@ -140,29 +147,30 @@ class SignatureFactory { this.headers['x-usbl-date'] = this.dates.longdate; return [ - `USBL1-HMAC-SHA256 Credential=${this.accessKey}/${this.dates.shortdate}/usbl1_request`, + `USBL1-HMAC-SHA256 Credential=${this.accessKey}/${this.dates + .shortdate}/usbl1_request`, `SignedHeaders=${this.getSignedHeaders()}`, `Signature=${this.getSignature()}` ].join(', '); - }; + } sign() { this.headers['Authorization'] = this.authHeader(); return { headers: this.headers, - url: (this.queryParameters) ? `${this.url}?${this.queryParameters}` : this.url + url: this.queryParameters + ? `${this.url}?${this.queryParameters}` + : this.url }; } static getDateTime() { - const date = (new Date()) - .toJSON() - .replace(/[\-:.]/g, ''); + const date = new Date().toJSON().replace(/[\-:.]/g, ''); return { shortdate: date.substr(0, 8), - longdate: `${date.substr(0, 15)}Z`, + longdate: `${date.substr(0, 15)}Z` }; } diff --git a/test/index.spec.js b/test/index.spec.js index ed0243c..e6ea2d8 100644 --- a/test/index.spec.js +++ b/test/index.spec.js @@ -4,7 +4,6 @@ const EmailProduct = require('../src/resources/emailProduct'); const AppsProduct = require('../src/resources/appsProduct'); describe('Usabilla', function() { - beforeEach(function() { this.usabilla = new Usabilla('access', 'secret'); }); diff --git a/test/resources/resource.spec.js b/test/resources/resource.spec.js index d0953cc..5d20d19 100644 --- a/test/resources/resource.spec.js +++ b/test/resources/resource.spec.js @@ -1,72 +1,72 @@ -const SignatureFactory = require("../../src/signing"); -const Resource = require("../../src/resources/resource"); -const https = require("https"); +const SignatureFactory = require('../../src/signing'); +const Resource = require('../../src/resources/resource'); +const https = require('https'); -describe("Resource", function() { +describe('Resource', function() { beforeEach(function() { this.signatureFactory = new SignatureFactory(); - spyOn(this.signatureFactory, "sign").and.returnValue({ - url: "foo", - headers: "bar" + spyOn(this.signatureFactory, 'sign').and.returnValue({ + url: 'foo', + headers: 'bar' }); this.spies = { reject: function() {}, resolve: function() {} }; - spyOn(this.spies, "reject"); - spyOn(this.spies, "resolve"); + spyOn(this.spies, 'reject'); + spyOn(this.spies, 'resolve'); this.config = { - protocol: "https", - host: "host" + protocol: 'https', + host: 'host' }; this.resource = new Resource( - "http://foo.bar", + 'http://foo.bar', this.signatureFactory, this.config ); }); - describe("handleOnData", function() { - it("concatenates new json string to existing json string", function() { - this.resource.str = "foo"; - this.resource.handleOnData("bar"); - expect(this.resource.str).toBe("foobar"); + describe('handleOnData', function() { + it('concatenates new json string to existing json string', function() { + this.resource.str = 'foo'; + this.resource.handleOnData('bar'); + expect(this.resource.str).toBe('foobar'); }); }); - describe("handleOnError", function() { - it("rejects with error", function() { - this.resource.handleOnError(this.spies.reject, "foo"); - expect(this.spies.reject).toHaveBeenCalledWith("foo"); + describe('handleOnError', function() { + it('rejects with error', function() { + this.resource.handleOnError(this.spies.reject, 'foo'); + expect(this.spies.reject).toHaveBeenCalledWith('foo'); }); }); - describe("handleOnEnd", function() { - it("rejects with answer error", function() { + describe('handleOnEnd', function() { + it('rejects with answer error', function() { this.resource.str = '{"error": "foo"}'; this.resource.handleOnEnd(this.spies.resolve, this.spies.reject); - expect(this.spies.reject).toHaveBeenCalledWith("foo"); + expect(this.spies.reject).toHaveBeenCalledWith('foo'); }); - it("resolves with first results if hasMore is false", function() { + it('resolves with first results if hasMore is false', function() { this.resource._results = []; this.resource.str = '{"items": [{"id": "foo"}]}'; this.resource.handleOnEnd(this.spies.resolve, this.spies.reject); - expect(this.spies.resolve).toHaveBeenCalledWith([{ id: "foo" }]); + expect(this.spies.resolve).toHaveBeenCalledWith([{ id: 'foo' }]); }); - it("resolves with first results if hasMore is true and iterator false", function() { + it('resolves with first results if hasMore is true and iterator false', function() { this.resource._results = []; this.resource.config.iterator = false; this.resource.str = '{"items": [{"id": "foo"}], "hasMore": true}'; this.resource.handleOnEnd(this.spies.resolve, this.spies.reject); - expect(this.spies.resolve).toHaveBeenCalledWith([{ id: "foo" }]); + expect(this.spies.resolve).toHaveBeenCalledWith([{ id: 'foo' }]); }); - it("calls get with query and updated results if hasMore and iterator is true", function() { - this.resource._results = [{ id: "foo" }]; + it('calls get with query and updated results if hasMore and iterator is true', function() { + this.resource._results = [{ id: 'foo' }]; this.resource._query = { - id: "foo", + id: 'foo', params: { limit: 10 } @@ -75,59 +75,59 @@ describe("Resource", function() { this.resource.config.iterator = true; this.resource.str = '{"items": [{"id": "bar"}], "hasMore": true, "lastTimestamp": 1}'; - spyOn(this.resource, "get").and.returnValue(Promise.resolve()); + spyOn(this.resource, 'get').and.returnValue(Promise.resolve()); this.resource.handleOnEnd(this.spies.resolve, this.spies.reject); expect(this.resource.get).toHaveBeenCalledWith( { - id: "foo", + id: 'foo', params: { limit: 10, since: 1 } }, - [{ id: "foo" }, { id: "bar" }] + [{ id: 'foo' }, { id: 'bar' }] ); }); }); - describe("get", function() { - it("calls https get with correct request options", function() { - spyOn(https, "get"); + describe('get', function() { + it('calls https get with correct request options', function() { + spyOn(https, 'get'); this.resource.get({}, []); const requestArgs = https.get.calls.mostRecent().args[0]; - expect(requestArgs.protocol).toBe("https:"); - expect(requestArgs.host).toBe("host"); - expect(requestArgs.path).toBe("foo"); - expect(requestArgs.headers).toBe("bar"); + expect(requestArgs.protocol).toBe('https:'); + expect(requestArgs.host).toBe('host'); + expect(requestArgs.path).toBe('foo'); + expect(requestArgs.headers).toBe('bar'); }); }); - describe("getDefaultHeaders", function() { - it("returns the proper default headers", function() { - const headers = Resource.getDefaultHeaders("1.0.0"); + describe('getDefaultHeaders', function() { + it('returns the proper default headers', function() { + const headers = Resource.getDefaultHeaders('1.0.0'); expect(headers).toEqual({ - "x-ub-api-client": "Usabilla API Node Client/1.0.0" + 'x-ub-api-client': 'Usabilla API Node Client/1.0.0' }); }); }); - describe("handleGetResponse", function() { - it("sets string and answer", function() { - this.resource.string = "foo"; - this.resource.answer = { foo: "foo" }; + describe('handleGetResponse', function() { + it('sets string and answer', function() { + this.resource.string = 'foo'; + this.resource.answer = { foo: 'foo' }; const response = { - on: jasmine.createSpy("on") + on: jasmine.createSpy('on') }; this.resource.handleGetResponse( Promise.resolve, Promise.reject, response ); - expect(this.resource.str).toBe(""); + expect(this.resource.str).toBe(''); expect(this.resource.answer).toEqual({}); - expect(response.on).toHaveBeenCalledWith("data", jasmine.any(Function)); - expect(response.on).toHaveBeenCalledWith("end", jasmine.any(Function)); + expect(response.on).toHaveBeenCalledWith('data', jasmine.any(Function)); + expect(response.on).toHaveBeenCalledWith('end', jasmine.any(Function)); }); }); }); diff --git a/test/signing.spec.js b/test/signing.spec.js index 2859369..f9ccf7c 100644 --- a/test/signing.spec.js +++ b/test/signing.spec.js @@ -1,13 +1,11 @@ const SignatureFactory = require('./../src/signing.js'); describe('SignatureFactory', function() { - beforeEach(function() { this.signatureFactory = new SignatureFactory('access', 'secret', 'host'); }); describe('setUrl', function() { - it('sets a URL', function() { this.signatureFactory.setUrl('foobar'); expect(this.signatureFactory.url).toEqual('foobar'); @@ -15,7 +13,6 @@ describe('SignatureFactory', function() { }); describe('setMethod', function() { - it('sets a Method', function() { this.signatureFactory.setMethod('foobar'); expect(this.signatureFactory.method).toEqual('foobar'); @@ -23,19 +20,20 @@ describe('SignatureFactory', function() { }); describe('setHeaders', function() { - it('sets provided headers to instance headers', function() { //init - this.signatureFactory.headers = {fooA: 'barA'}; + this.signatureFactory.headers = { fooA: 'barA' }; - this.signatureFactory.setHeaders({fooB: 'barB'}); + this.signatureFactory.setHeaders({ fooB: 'barB' }); - expect(this.signatureFactory.headers).toEqual({fooA: 'barA', fooB: 'barB'}); + expect(this.signatureFactory.headers).toEqual({ + fooA: 'barA', + fooB: 'barB' + }); }); }); describe('handleQuery', function() { - it('should transform URL based on query with id', function() { this.signatureFactory.url = 'bar/:id/bar'; let query = { @@ -78,12 +76,13 @@ describe('SignatureFactory', function() { this.signatureFactory.handleQuery(query); - expect(this.signatureFactory.queryParameters).toEqual('limit=foo&since=bar'); + expect(this.signatureFactory.queryParameters).toEqual( + 'limit=foo&since=bar' + ); }); }); describe('getHeadersToSign', function() { - //init beforeEach(function() { this.signatureFactory.headers = { @@ -95,11 +94,11 @@ describe('SignatureFactory', function() { }); it('should add add host header', function() { - expect(this.headers.hasOwnProperty('host')).toBeTruthy() + expect(this.headers.hasOwnProperty('host')).toBeTruthy(); }); it('should delete possible cached Authorization header', function() { - expect(this.headers.hasOwnProperty('Authorization')).toBeFalsy() + expect(this.headers.hasOwnProperty('Authorization')).toBeFalsy(); }); it('should sort headers alphabetically', function() { @@ -113,7 +112,6 @@ describe('SignatureFactory', function() { }); describe('getCanonicalHeaders', function() { - it('should getCanonicalHeaders', function() { //init this.signatureFactory.headers = { @@ -128,7 +126,6 @@ describe('SignatureFactory', function() { }); describe('getSignedHeaders', function() { - it('should getSignedHeaders', function() { //init this.signatureFactory.headers = { @@ -143,25 +140,25 @@ describe('SignatureFactory', function() { }); describe('canonicalString', function() { - it('returns the canonical string', function() { this.signatureFactory.method = 'GET'; this.signatureFactory.url = 'url_foobar'; let canonicalString = this.signatureFactory.canonicalString(); - expect(canonicalString).toEqual([ - 'GET', - 'url_foobar', - '', - 'host:data.usabilla.com\n', - 'host', - 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855' - ].join('\n')); + expect(canonicalString).toEqual( + [ + 'GET', + 'url_foobar', + '', + 'host:data.usabilla.com\n', + 'host', + 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855' + ].join('\n') + ); }); }); describe('getDateTime', function() { - it('returns an object with "shortdate" and "longdate"', function() { let time = SignatureFactory.getDateTime(); @@ -171,36 +168,45 @@ describe('SignatureFactory', function() { }); describe('stringToSign', function() { - it('returns the string to sign', function() { spyOn(SignatureFactory, 'hash').and.returnValue('foo'); this.signatureFactory.dates = SignatureFactory.getDateTime(); const stringToSign = this.signatureFactory.stringToSign(); - expect(stringToSign).toBe([ - 'USBL1-HMAC-SHA256', - this.signatureFactory.dates.longdate, - `${this.signatureFactory.dates.shortdate}/usbl1_request`, - 'foo' - ].join('\n')); + expect(stringToSign).toBe( + [ + 'USBL1-HMAC-SHA256', + this.signatureFactory.dates.longdate, + `${this.signatureFactory.dates.shortdate}/usbl1_request`, + 'foo' + ].join('\n') + ); }); }); describe('getSignature', function() { - it('calls SignatureFactory.hmac with the correct data', function() { spyOn(SignatureFactory, 'hmac'); spyOn(this.signatureFactory, 'stringToSign').and.returnValue('bar'); this.signatureFactory.dates = SignatureFactory.getDateTime(); this.signatureFactory.getSignature(); expect(SignatureFactory.hmac).toHaveBeenCalledTimes(3); - expect(SignatureFactory.hmac).toHaveBeenCalledWith('USBL1secret', this.signatureFactory.dates.shortdate); - expect(SignatureFactory.hmac).toHaveBeenCalledWith(undefined, 'usbl1_request'); - expect(SignatureFactory.hmac).toHaveBeenCalledWith(undefined, 'bar', 'hex'); + expect(SignatureFactory.hmac).toHaveBeenCalledWith( + 'USBL1secret', + this.signatureFactory.dates.shortdate + ); + expect(SignatureFactory.hmac).toHaveBeenCalledWith( + undefined, + 'usbl1_request' + ); + expect(SignatureFactory.hmac).toHaveBeenCalledWith( + undefined, + 'bar', + 'hex' + ); }); }); describe('authHeader', function() { - it('returns the authorization header string', function() { spyOn(SignatureFactory, 'getDateTime').and.returnValue({ longdate: 'foo', @@ -209,11 +215,14 @@ describe('SignatureFactory', function() { spyOn(this.signatureFactory, 'getSignedHeaders').and.returnValue('baz'); spyOn(this.signatureFactory, 'getSignature').and.returnValue('bax'); const authHeader = this.signatureFactory.authHeader(); - expect(authHeader).toBe([ - `USBL1-HMAC-SHA256 Credential=${this.signatureFactory.accessKey}/${this.signatureFactory.dates.shortdate}/usbl1_request`, - 'SignedHeaders=baz', - 'Signature=bax' - ].join(', ')); + expect(authHeader).toBe( + [ + `USBL1-HMAC-SHA256 Credential=${this.signatureFactory + .accessKey}/${this.signatureFactory.dates.shortdate}/usbl1_request`, + 'SignedHeaders=baz', + 'Signature=bax' + ].join(', ') + ); }); }); diff --git a/yarn.lock b/yarn.lock index 28c60a5..bcaf43d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -71,6 +71,10 @@ acorn@^3.0.4: version "3.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" +acorn@^5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.2.tgz#911cb53e036807cf0fa778dc5d370fbd864246d7" + after@0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" @@ -79,6 +83,10 @@ ajv-keywords@^1.0.0: version "1.5.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" +ajv-keywords@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.0.tgz#a296e17f7bfae7c1ce4f7e0de53d29cb32162df0" + ajv@^4.7.0, ajv@^4.9.1: version "4.11.5" resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.5.tgz#b6ee74657b993a01dce44b7944d56f485828d5bd" @@ -86,6 +94,15 @@ ajv@^4.7.0, ajv@^4.9.1: co "^4.6.0" json-stable-stringify "^1.0.1" +ajv@^5.2.0, ajv@^5.2.3: + version "5.2.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.2.3.tgz#c06f598778c44c6b161abafe3466b81ad1814ed2" + dependencies: + co "^4.6.0" + fast-deep-equal "^1.0.0" + json-schema-traverse "^0.3.0" + json-stable-stringify "^1.0.1" + align-text@^0.1.1, align-text@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" @@ -102,7 +119,11 @@ ansi-escapes@^1.0.0, ansi-escapes@^1.1.0: version "1.4.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" -ansi-regex@^2.0.0: +ansi-escapes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92" + +ansi-regex@^2.0.0, ansi-regex@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -114,7 +135,7 @@ ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" -ansi-styles@^3.1.0, ansi-styles@^3.2.0: +ansi-styles@^3.0.0, ansi-styles@^3.1.0, ansi-styles@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" dependencies: @@ -219,7 +240,7 @@ arraybuffer.slice@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca" -arrify@^1.0.0: +arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -859,6 +880,13 @@ babel-runtime@^6.18.0, babel-runtime@^6.22.0: core-js "^2.4.0" regenerator-runtime "^0.10.0" +babel-runtime@^6.23.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + babel-template@^6.22.0, babel-template@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.23.0.tgz#04d4f270adbb3aa704a8143ae26faa529238e638" @@ -911,6 +939,10 @@ balanced-match@^0.4.1: version "0.4.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + base64-arraybuffer@0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" @@ -982,6 +1014,10 @@ body-parser@^1.16.1: raw-body "~2.2.0" type-is "~1.6.14" +boolify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/boolify/-/boolify-1.0.1.tgz#b5c09e17cacd113d11b7bb3ed384cc012994d86b" + boom@2.x.x: version "2.10.1" resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" @@ -995,6 +1031,13 @@ brace-expansion@^1.0.0: balanced-match "^0.4.1" concat-map "0.0.1" +brace-expansion@^1.1.7: + version "1.1.8" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + braces@^0.1.2: version "0.1.5" resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6" @@ -1257,6 +1300,14 @@ camelcase-keys@^2.0.0: camelcase "^2.0.0" map-obj "^1.0.0" +camelcase-keys@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.1.0.tgz#214d348cc5457f39316a2c31cc3e37246325e73f" + dependencies: + camelcase "^4.1.0" + map-obj "^2.0.0" + quick-lru "^1.0.0" + camelcase@^1.0.2: version "1.2.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" @@ -1265,6 +1316,10 @@ camelcase@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + caseless@~0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" @@ -1290,7 +1345,7 @@ chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.1, chalk@^2.1.0: +chalk@2.1.0, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" dependencies: @@ -1341,6 +1396,12 @@ cli-cursor@^1.0.1, cli-cursor@^1.0.2: dependencies: restore-cursor "^1.0.1" +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + dependencies: + restore-cursor "^2.0.0" + cli-spinners@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c" @@ -1364,6 +1425,14 @@ cliui@^2.1.0: right-align "^0.1.1" wordwrap "0.0.2" +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + clone-stats@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" @@ -1445,6 +1514,12 @@ commitizen@^2.9.6: shelljs "0.7.6" strip-json-comments "2.0.1" +common-tags@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.4.0.tgz#1187be4f3d4cf0c0427d43f74eef1f73501614c0" + dependencies: + babel-runtime "^6.18.0" + component-bind@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" @@ -1473,6 +1548,14 @@ concat-stream@^1.4.7, concat-stream@^1.5.2, concat-stream@~1.5.0, concat-stream@ readable-stream "~2.0.0" typedarray "~0.0.5" +concat-stream@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" + dependencies: + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + config-chain@~1.1.8: version "1.1.11" resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.11.tgz#aba09747dfbe4c3e70e766a6e41586e1859fc6f2" @@ -1587,7 +1670,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.2: create-hash "^1.1.0" inherits "^2.0.1" -cross-spawn@^5.0.1: +cross-spawn@^5.0.1, cross-spawn@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" dependencies: @@ -1703,7 +1786,13 @@ debug@^2.1.1, debug@^2.2.0: dependencies: ms "0.7.2" -decamelize@^1.0.0, decamelize@^1.1.2: +debug@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + dependencies: + ms "2.0.0" + +decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -1811,6 +1900,10 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" +dlv@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.0.tgz#fee1a7c43f63be75f3f679e85262da5f102764a7" + doctrine@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63" @@ -2012,6 +2105,13 @@ escope@^3.6.0: esrecurse "^4.1.0" estraverse "^4.1.1" +eslint-scope@^3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + eslint@^3.12.2: version "3.18.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.18.0.tgz#647e985c4ae71502d20ac62c109f66d5104c8a4b" @@ -2052,6 +2152,48 @@ eslint@^3.12.2: text-table "~0.2.0" user-home "^2.0.0" +eslint@^4.5.0: + version "4.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.8.0.tgz#229ef0e354e0e61d837c7a80fdfba825e199815e" + dependencies: + ajv "^5.2.0" + babel-code-frame "^6.22.0" + chalk "^2.1.0" + concat-stream "^1.6.0" + cross-spawn "^5.1.0" + debug "^3.0.1" + doctrine "^2.0.0" + eslint-scope "^3.7.1" + espree "^3.5.1" + 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.17.0" + ignore "^3.3.3" + imurmurhash "^0.1.4" + inquirer "^3.0.6" + is-resolvable "^1.0.0" + js-yaml "^3.9.1" + json-stable-stringify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.4" + minimatch "^3.0.2" + 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.3.0" + strip-ansi "^4.0.0" + strip-json-comments "~2.0.1" + table "^4.0.1" + text-table "~0.2.0" + espree@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.0.tgz#41656fa5628e042878025ef467e78f125cb86e1d" @@ -2059,6 +2201,13 @@ espree@^3.4.0: acorn "4.0.4" acorn-jsx "^3.0.0" +espree@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.1.tgz#0c988b8ab46db53100a1954ae4ba995ddd27d87e" + dependencies: + acorn "^5.1.1" + acorn-jsx "^3.0.0" + esprima@2.7.x, esprima@^2.1.0, esprima@^2.6.0, esprima@^2.7.1: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" @@ -2133,6 +2282,18 @@ evp_bytestokey@^1.0.0: dependencies: create-hash "^1.1.1" +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + execa@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" @@ -2198,6 +2359,14 @@ external-editor@^1.1.0: spawn-sync "^1.0.15" tmp "^0.0.29" +external-editor@^2.0.4: + version "2.0.5" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.0.5.tgz#52c249a3981b9ba187c7cacf5beb50bf1d91a6bc" + dependencies: + iconv-lite "^0.4.17" + jschardet "^1.4.2" + tmp "^0.0.33" + extglob@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" @@ -2215,6 +2384,10 @@ fancy-log@^1.1.0: chalk "^1.1.1" time-stamp "^1.0.0" +fast-deep-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" + fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" @@ -2226,6 +2399,12 @@ figures@^1.3.5, figures@^1.7.0: escape-string-regexp "^1.0.5" object-assign "^4.1.0" +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + dependencies: + escape-string-regexp "^1.0.5" + file-entry-cache@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" @@ -2281,6 +2460,12 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + dependencies: + locate-path "^2.0.0" + findup-sync@0.4.2: version "0.4.2" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.4.2.tgz#a8117d0f73124f5a4546839579fe52d7129fb5e5" @@ -2416,6 +2601,10 @@ function-bind@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + gauge@~1.2.0: version "1.2.7" resolved "https://registry.yarnpkg.com/gauge/-/gauge-1.2.7.tgz#e9cec5483d3d4ee0ef44b60a7d99e4935e136d93" @@ -2455,6 +2644,10 @@ generate-object-property@^1.1.0: dependencies: is-property "^1.0.0" +get-caller-file@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" + get-own-enumerable-property-symbols@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-2.0.1.tgz#5c4ad87f2834c4b9b4e84549dc1e0650fb38c24b" @@ -2463,6 +2656,10 @@ get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" +get-stdin@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398" + get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -2571,6 +2768,17 @@ glob@^5.0.15, glob@~5.0.0: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@~3.1.21: version "3.1.21" resolved "https://registry.yarnpkg.com/glob/-/glob-3.1.21.tgz#d29e0a055dea5138f4d07ed40e8982e83c2066cd" @@ -2579,6 +2787,17 @@ glob@~3.1.21: inherits "1" minimatch "~0.2.11" +glob@~7.0.6: + version "7.0.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.2" + once "^1.3.0" + path-is-absolute "^1.0.0" + global-modules@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d" @@ -2599,6 +2818,10 @@ globals@^9.0.0, globals@^9.14.0: version "9.17.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286" +globals@^9.17.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + globby@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" @@ -2855,6 +3078,10 @@ iconv-lite@0.4.15: version "0.4.15" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" +iconv-lite@^0.4.17: + version "0.4.19" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" + ieee754@^1.1.4: version "1.1.8" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" @@ -2863,6 +3090,10 @@ ignore@^3.2.0: version "3.2.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.6.tgz#26e8da0644be0bb4cb39516f6c79f0e0f4ffe48c" +ignore@^3.2.7, ignore@^3.3.3: + version "3.3.5" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.5.tgz#c4e715455f6073a8d7e5dae72d2fc9d71663dba6" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -2873,7 +3104,7 @@ indent-string@^2.1.0: dependencies: repeating "^2.0.0" -indent-string@^3.0.0: +indent-string@^3.0.0, indent-string@^3.1.0, indent-string@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" @@ -2892,7 +3123,7 @@ inherits@1: version "1.0.2" resolved "https://registry.yarnpkg.com/inherits/-/inherits-1.0.2.tgz#ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b" -inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1: +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" @@ -2947,6 +3178,25 @@ inquirer@^0.12.0: strip-ansi "^3.0.0" through "^2.3.6" +inquirer@^3.0.6: + version "3.3.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.0.4" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rx-lite "^4.0.8" + rx-lite-aggregates "^4.0.8" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + insert-module-globals@^7.0.0: version "7.0.1" resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.0.1.tgz#c03bf4e01cb086d5b5e5ace8ad0afe7889d638c3" @@ -2970,6 +3220,10 @@ invariant@^2.2.0: dependencies: loose-envify "^1.0.0" +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + is-absolute@^0.2.3: version "0.2.6" resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-0.2.6.tgz#20de69f3db942ef2d87b9c2da36f172235b1b5eb" @@ -3258,7 +3512,7 @@ js-yaml@3.x, js-yaml@^3.5.1: argparse "^1.0.7" esprima "^3.1.1" -js-yaml@^3.4.3: +js-yaml@^3.4.3, js-yaml@^3.9.1: version "3.10.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" dependencies: @@ -3269,6 +3523,10 @@ jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" +jschardet@^1.4.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.5.1.tgz#c519f629f86b3a5bedba58a88d311309eec097f9" + jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" @@ -3277,6 +3535,10 @@ jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" +json-schema-traverse@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" + json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" @@ -3427,6 +3689,12 @@ lazy-cache@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + dependencies: + invert-kv "^1.0.0" + lcov-parse@0.0.10: version "0.0.10" resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-0.0.10.tgz#1b0b8ff9ac9c7889250582b70b71315d9da6d9a3" @@ -3538,6 +3806,22 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + lodash._baseassign@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" @@ -3647,10 +3931,18 @@ lodash.mapvalues@^4.4.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + lodash.memoize@~3.0.3: version "3.0.4" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f" +lodash.merge@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5" + lodash.pad@^4.1.0: version "4.5.1" resolved "https://registry.yarnpkg.com/lodash.pad/-/lodash.pad-4.5.1.tgz#4330949a833a7c8da22cc20f6a26c4d59debba70" @@ -3692,6 +3984,10 @@ lodash.templatesettings@^3.0.0: lodash._reinterpolate "^3.0.0" lodash.escape "^3.0.0" +lodash.unescape@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" + lodash@4.17.2: version "4.17.2" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.2.tgz#34a3055babe04ce42467b607d700072c7ff6bf42" @@ -3742,6 +4038,17 @@ log4js@^0.6.31: readable-stream "~1.0.2" semver "~4.3.3" +loglevel-colored-level-prefix@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/loglevel-colored-level-prefix/-/loglevel-colored-level-prefix-1.0.0.tgz#6a40218fdc7ae15fc76c3d0f3e676c465388603e" + dependencies: + chalk "^1.1.3" + loglevel "^1.4.1" + +loglevel@^1.4.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.5.0.tgz#3863984a2c326b986fbb965f378758a6dc8a4324" + longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" @@ -3770,6 +4077,12 @@ lru-cache@^4.0.1: pseudomap "^1.0.2" yallist "^2.1.2" +make-plural@~3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/make-plural/-/make-plural-3.0.6.tgz#2033a03bac290b8f3bb91258f65b9df7e8b01ca7" + optionalDependencies: + minimist "^1.2.0" + map-cache@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -3778,6 +4091,10 @@ map-obj@^1.0.0, map-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" +map-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" + map-stream@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" @@ -3786,6 +4103,12 @@ media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + dependencies: + mimic-fn "^1.0.0" + meow@^3.3.0: version "3.7.0" resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" @@ -3805,6 +4128,20 @@ merge@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" +messageformat-parser@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/messageformat-parser/-/messageformat-parser-1.1.0.tgz#13ba2250a76bbde8e0fca0dbb3475f95c594a90a" + +messageformat@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/messageformat/-/messageformat-1.0.2.tgz#908f4691f29ff28dae35c45436a24cff93402388" + dependencies: + glob "~7.0.6" + make-plural "~3.0.6" + messageformat-parser "^1.0.0" + nopt "~3.0.6" + reserved-words "^0.1.1" + micromatch@^2.1.5, micromatch@^2.3.7: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" @@ -3844,6 +4181,10 @@ mime@^1.2.11, mime@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" +mimic-fn@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" + minimalistic-assert@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" @@ -3864,6 +4205,12 @@ minimatch@2.0.1, minimatch@^2.0.1: dependencies: brace-expansion "^1.0.0" +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + minimatch@~0.2.11: version "0.2.14" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a" @@ -3913,6 +4260,10 @@ ms@0.7.2: version "0.7.2" resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + multipipe@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" @@ -3927,6 +4278,10 @@ mute-stream@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.6.tgz#48962b19e169fd1dfc240b3f1e7317627bbc47db" +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + nan@^2.3.0: version "2.5.1" resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2" @@ -3972,7 +4327,7 @@ nomnomnomnom@^2.0.0: chalk "~0.4.0" underscore "~1.6.0" -nopt@3.x, nopt@^3.0.3, nopt@~3.0.1: +nopt@3.x, nopt@^3.0.3, nopt@~3.0.1, nopt@~3.0.6: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" dependencies: @@ -4141,6 +4496,12 @@ onetime@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + dependencies: + mimic-fn "^1.0.0" + optimist@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" @@ -4192,11 +4553,19 @@ os-homedir@^1.0.0, os-homedir@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" + os-shim@^0.1.2, os-shim@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/os-shim/-/os-shim-0.1.3.tgz#6b62c3791cf7909ea35ed46e17658bb417cb3917" -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1: +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -4217,6 +4586,16 @@ p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" +p-limit@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + dependencies: + p-limit "^1.1.0" + p-map@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" @@ -4306,11 +4685,15 @@ path-exists@2.1.0, path-exists@^2.0.0: dependencies: pinkie-promise "^2.0.0" +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" -path-is-inside@^1.0.1: +path-is-inside@^1.0.1, path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" @@ -4347,6 +4730,12 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + dependencies: + pify "^2.0.0" + pause-stream@0.0.11: version "0.0.11" resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" @@ -4381,6 +4770,10 @@ pluralize@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" +pluralize@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -4389,10 +4782,56 @@ preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" -prettier@^1.7.4: +prettier-eslint-cli@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/prettier-eslint-cli/-/prettier-eslint-cli-4.4.0.tgz#3ceca9d5a207f4dde90a40545f317d6e13a3f932" + dependencies: + arrify "^1.0.1" + babel-runtime "^6.23.0" + boolify "^1.0.0" + camelcase-keys "^4.1.0" + chalk "2.1.0" + common-tags "^1.4.0" + eslint "^4.5.0" + find-up "^2.1.0" + get-stdin "^5.0.1" + glob "^7.1.1" + ignore "^3.2.7" + indent-string "^3.1.0" + lodash.memoize "^4.1.2" + loglevel-colored-level-prefix "^1.0.0" + messageformat "^1.0.2" + prettier-eslint "^8.0.0" + rxjs "^5.3.0" + yargs "8.0.2" + +prettier-eslint@^8.0.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/prettier-eslint/-/prettier-eslint-8.2.0.tgz#90adb1f7513be86238a3f32afcea8d1cb4b79055" + dependencies: + common-tags "^1.4.0" + dlv "^1.1.0" + eslint "^4.5.0" + indent-string "^3.2.0" + lodash.merge "^4.6.0" + loglevel-colored-level-prefix "^1.0.0" + prettier "^1.7.0" + pretty-format "^20.0.3" + require-relative "^0.8.7" + typescript "^2.4.2" + typescript-eslint-parser "^7.0.0" + +prettier@^1.7.0: version "1.7.4" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.7.4.tgz#5e8624ae9363c80f95ec644584ecdf55d74f93fa" +pretty-format@^20.0.3: + version "20.0.3" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-20.0.3.tgz#020e350a560a1fe1a98dc3beb6ccffb386de8b14" + dependencies: + ansi-regex "^2.1.1" + ansi-styles "^3.0.0" + pretty-format@^21.2.1: version "21.2.1" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-21.2.1.tgz#ae5407f3cf21066cd011aa1ba5fce7b6a2eddb36" @@ -4420,6 +4859,10 @@ progress@^1.1.8: version "1.1.8" resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" +progress@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" + proto-list@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" @@ -4470,6 +4913,10 @@ querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" +quick-lru@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" + randomatic@^1.1.3: version "1.1.6" resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" @@ -4515,6 +4962,13 @@ read-pkg-up@^1.0.1: find-up "^1.0.0" read-pkg "^1.0.0" +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" @@ -4523,6 +4977,14 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + "readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0.2: version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" @@ -4544,6 +5006,18 @@ read-pkg@^1.0.0: string_decoder "~0.10.x" util-deprecate "~1.0.1" +readable-stream@^2.2.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + safe-buffer "~5.1.1" + string_decoder "~1.0.3" + util-deprecate "~1.0.1" + readable-stream@~1.1.9: version "1.1.14" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" @@ -4602,6 +5076,10 @@ regenerator-runtime@^0.10.0: version "0.10.3" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.3.tgz#8c4367a904b51ea62a908ac310bf99ff90a82a3e" +regenerator-runtime@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" + regenerator-transform@0.9.8: version "0.9.8" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.9.8.tgz#0f88bb2bc03932ddb7b6b7312e68078f01026d6c" @@ -4749,15 +5227,23 @@ request@~2.74.0: tough-cookie "~2.3.0" tunnel-agent "~0.4.1" +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + require-from-string@^1.1.0: version "1.2.1" resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + require-relative@^0.8.7: version "0.8.7" resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de" -require-uncached@^1.0.2: +require-uncached@^1.0.2, require-uncached@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" dependencies: @@ -4768,6 +5254,10 @@ requires-port@1.x.x: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" +reserved-words@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/reserved-words/-/reserved-words-0.1.2.tgz#00a0940f98cd501aeaaac316411d9adc52b31ab1" + resolve-dir@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e" @@ -4790,6 +5280,13 @@ restore-cursor@^1.0.1: exit-hook "^1.0.0" onetime "^1.0.0" +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + retry@^0.10.0: version "0.10.1" resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" @@ -4836,6 +5333,16 @@ run-series@^1.1.3: version "1.1.4" resolved "https://registry.yarnpkg.com/run-series/-/run-series-1.1.4.tgz#89a73ddc5e75c9ef8ab6320c0a1600d6a41179b9" +rx-lite-aggregates@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" + dependencies: + rx-lite "*" + +rx-lite@*, rx-lite@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" + rx-lite@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" @@ -4844,7 +5351,7 @@ rx@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" -rxjs@^5.0.0-beta.11: +rxjs@^5.0.0-beta.11, rxjs@^5.3.0: version "5.4.3" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.4.3.tgz#0758cddee6033d68e0fd53676f0f3596ce3d483f" dependencies: @@ -4854,6 +5361,10 @@ safe-buffer@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + semantic-release@^6.3.2: version "6.3.2" resolved "https://registry.yarnpkg.com/semantic-release/-/semantic-release-6.3.2.tgz#224ec4540724a1646cc6dba4a9d2cd6bc8b68311" @@ -4877,7 +5388,7 @@ semantic-release@^6.3.2: run-series "^1.1.3" semver "^5.0.3" -"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0: +"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", semver@5.3.0, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -4889,7 +5400,7 @@ sequencify@~0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/sequencify/-/sequencify-0.0.7.tgz#90cff19d02e07027fd767f5ead3e7b95d1e7380c" -set-blocking@~2.0.0: +set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -4953,7 +5464,7 @@ sigmund@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" -signal-exit@^3.0.0: +signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" @@ -4965,6 +5476,12 @@ slice-ansi@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" +slice-ansi@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" + dependencies: + is-fullwidth-code-point "^2.0.0" + slide@^1.1.3: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" @@ -5163,10 +5680,23 @@ string-width@^2.0.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^3.0.0" +string-width@^2.1.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + string_decoder@~0.10.0, string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" +string_decoder@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" + dependencies: + safe-buffer "~5.1.0" + stringify-object@^3.2.0: version "3.2.1" resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.2.1.tgz#2720c2eff940854c819f6ee252aaeb581f30624d" @@ -5185,6 +5715,12 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + dependencies: + ansi-regex "^3.0.0" + strip-ansi@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" @@ -5267,6 +5803,17 @@ table@^3.7.8: slice-ansi "0.0.4" string-width "^2.0.0" +table@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" + dependencies: + ajv "^5.2.3" + ajv-keywords "^2.1.0" + chalk "^2.1.0" + lodash "^4.17.4" + slice-ansi "1.0.0" + string-width "^2.1.1" + tar-pack@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" @@ -5338,6 +5885,12 @@ tmp@^0.0.29: dependencies: os-tmpdir "~1.0.1" +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + dependencies: + os-tmpdir "~1.0.2" + to-array@0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" @@ -5418,10 +5971,21 @@ type-is@~1.6.14: media-typer "0.3.0" mime-types "~2.1.13" -typedarray@~0.0.5: +typedarray@^0.0.6, typedarray@~0.0.5: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" +typescript-eslint-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/typescript-eslint-parser/-/typescript-eslint-parser-7.0.0.tgz#be57d8768e37707af825e339ea2af18d7393cabb" + dependencies: + lodash.unescape "4.0.1" + semver "5.3.0" + +typescript@^2.4.2: + version "2.5.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.5.3.tgz#df3dcdc38f3beb800d4bc322646b04a3f6ca7f0d" + uglify-js@^2.6: version "2.8.16" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.16.tgz#d286190b6eefc6fd65eb0ecac6551e0b0e8839a4" @@ -5605,6 +6169,10 @@ watchify@^3.7.0: through2 "^2.0.0" xtend "^4.0.0" +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + which@^1.0.9, which@^1.1.1, which@^1.2.1, which@^1.2.12: version "1.2.14" resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" @@ -5643,6 +6211,13 @@ wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -5672,10 +6247,38 @@ xmlhttprequest-ssl@1.5.3: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" +yargs-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" + dependencies: + camelcase "^4.1.0" + +yargs@8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" + dependencies: + camelcase "^4.1.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + read-pkg-up "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^7.0.0" + yargs@~3.10.0: version "3.10.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"