From 579e51b8c2ee24010639b99757b2bf5d9106e975 Mon Sep 17 00:00:00 2001 From: scottinet Date: Thu, 12 Sep 2019 11:28:38 +0200 Subject: [PATCH 1/3] [compat] make this SDK compatible with node6 again --- .travis.yml | 10 +- features/steps/auth.js | 64 +++--- features/steps/collection.js | 201 +++++++++-------- features/steps/document.js | 405 +++++++++++++++++++---------------- features/steps/index.js | 106 +++++---- features/steps/realtime.js | 34 ++- features/steps/security.js | 54 ++--- features/support/hooks.js | 33 ++- package-lock.json | 372 ++++++++------------------------ package.json | 4 +- src/protocols/http.js | 19 +- 11 files changed, 593 insertions(+), 709 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2157c2fb2..00cca6849 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,7 +12,7 @@ jobs: name: Unit Tests if: type = pull_request OR type = push AND branch =~ /^master|[0-9]+-(dev|stable)$/ OR type = cron language: node_js - node_js: 8 + node_js: 6 env: # Codecov token @@ -43,7 +43,7 @@ jobs: name: Integration Tests if: type = pull_request OR type = push AND branch =~ /^master|[0-9]+-(dev|stable)$/ OR type = cron language: node_js - node_js: 8 + node_js: 6 addons: apt: @@ -69,7 +69,7 @@ jobs: name: Documentation Tests if: type = pull_request OR type = push AND branch =~ /^master|[0-9]+-(dev|stable)$/ OR type = cron language: node_js - node_js: 8 + node_js: 10 before_script: - sudo apt-get install libgconf-2-4 @@ -158,7 +158,7 @@ jobs: if: tag IS present AND type != cron sudo: false language: node_js - node_js: 8 + node_js: 6 addons: apt: @@ -191,7 +191,7 @@ jobs: if: type = push && branch =~ /^[0-9]+-dev$/ sudo: false language: node_js - node_js: 8 + node_js: 6 addons: apt: diff --git a/features/steps/auth.js b/features/steps/auth.js index b61abb20a..a8d4d2316 100644 --- a/features/steps/auth.js +++ b/features/steps/auth.js @@ -3,22 +3,19 @@ const should = require('should'), retry = require('retry'); -Given('I log in as {string}:{string}', async function (username, password) { - try { - this.jwt = await this.kuzzle.auth.login('local', { - username, - password +Given('I log in as {string}:{string}', function (username, password) { + return this.kuzzle.auth.login('local', { username, password }) + .then(jwt => { + this.jwt = jwt; + }) + .catch(error => { + this.jwt = 'invalid'; + this.error = error; }); - this.error = null; - } - catch (error) { - this.jwt = 'invalid'; - this.error = error; - } }); -When('I logout', async function () { - await this.kuzzle.auth.logout(); +When('I logout', function () { + return this.kuzzle.auth.logout(); }); When('I refresh the JWT', function (cb) { @@ -27,11 +24,16 @@ When('I refresh the JWT', function (cb) { // we have to wait for at least 1s: if we ask Kuzzle to refresh a JWT that // has been generated during the same second, then the new JWT will be // identical to the one being refreshed - setTimeout(async () => { - const token = await this.kuzzle.auth.refreshToken(); - this.jwt = token.jwt; - cb(); - }, 1000); + setTimeout( + () => { + this.kuzzle.auth.refreshToken() + .then(token => { + this.jwt = token.jwt; + cb(); + }) + .catch(err => cb(err)); + }, + 1000); }); Then('the previous JWT is now invalid', function (cb) { @@ -56,19 +58,23 @@ Then('the previous JWT is now invalid', function (cb) { }); }); -Then(/^the JWT is (in)?valid$/, async function (not) { - const response = await this.kuzzle.auth.checkToken(this.jwt); - - if (not) { - should(response.valid).be.false(); - } - else { - should(response.valid).be.true(); - } +Then(/^the JWT is (in)?valid$/, function (not) { + return this.kuzzle.auth.checkToken(this.jwt) + .then(response => { + if (not) { + should(response.valid).be.false(); + } + else { + should(response.valid).be.true(); + } + }); }); -Given('I get my rights', async function () { - this.rights = await this.kuzzle.auth.getMyRights(); +Given('I get my rights', function () { + return this.kuzzle.auth.getMyRights() + .then(rights => { + this.rights = rights; + }); }); Then('I have a vector with {int} rights', function (nbRights) { diff --git a/features/steps/collection.js b/features/steps/collection.js index 202d1906a..f80a7ebb5 100644 --- a/features/steps/collection.js +++ b/features/steps/collection.js @@ -1,135 +1,148 @@ const { Given, When, Then } = require('cucumber'); const should = require('should'); -Given('has specifications', async function () { - await this.kuzzle.collection.updateSpecifications(this.index, this.collection, {strict: true}); +Given('has specifications', function () { + return this.kuzzle.collection.updateSpecifications( + this.index, + this.collection, + { strict: true }); }); -Given('it has a collection {string}', async function (collection) { - await this.kuzzle.collection.create(this.index, collection); - this.collection = collection; +Given('it has a collection {string}', function (collection) { + return this.kuzzle.collection.create(this.index, collection) + .then(() => { + this.collection = collection; + }); }); -Given('I truncate the collection {string}', async function (collection) { - await this.kuzzle.collection.truncate(this.index, collection, {refresh: 'wait_for'}); +Given('I truncate the collection {string}', function (collection) { + return this.kuzzle.collection.truncate( + this.index, + collection, + { refresh: 'wait_for' }); }); -When('I check if the collection {string} exists', async function (collection) { - try { - this.content = await this.kuzzle.collection.exist(this.index, collection); - } - catch (error) { - this.error = error; - } +When('I check if the collection {string} exists', function (collection) { + return this.kuzzle.collection.exists(this.index, collection) + .then(content => { + this.content = content; + }) + .catch(error => { + this.error = error; + }); }); -When(/^I create a collection '(.*?)'( with a mapping)?$/, async function (collection, withMapping) { - try { - const mapping = { - properties: { - gordon: {type: 'keyword'} - } - }; - - this.content = await this.kuzzle.collection.create( - this.index, - collection, - withMapping ? mapping : undefined - ); - } - catch (error) { - this.error = error; - } +When(/^I create a collection '(.*?)'( with a mapping)?$/, function (collection, withMapping) { + const mapping = withMapping + ? { properties: { gordon: {type: 'keyword'} } } + : undefined; + return this.kuzzle.collection.create(this.index, collection, mapping) + .then(content => { + this.content = content; + }) + .catch (error => { + this.error = error; + }); }); -When('I delete the specifications of {string}', async function (collection) { - try { - await this.kuzzle.collection.deleteSpecifications(this.index, collection); - } - catch (error) { - this.error = error; - } - +When('I delete the specifications of {string}', function (collection) { + return this.kuzzle.collection.deleteSpecifications(this.index, collection) + .catch(error => { + this.error = error; + }); }); -When('I list the collections of {string}', async function (index) { - try { - this.content = await this.kuzzle.collection.list(index); - this.total = this.content.collections.length; - } - catch (error) { - this.error = error; - } +When('I list the collections of {string}', function (index) { + return this.kuzzle.collection.list(index) + .then(content => { + this.content = content; + this.total = this.content.collections.length; + }) + .catch(error => { + this.error = error; + }); }); -When('I update the mapping of collection {string}', async function (collection) { - try { - this.content = await this.kuzzle.collection.updateMapping(this.index, collection, { +When('I update the mapping of collection {string}', function (collection) { + return this.kuzzle.collection + .updateMapping(this.index, collection, { properties: { gordon: {type: 'keyword'} } + }) + .then(content => { + this.content = content; + }) + .catch(err => { + this.error = err; }); - } - catch (error) { - this.error = error; - } - }); -When('I update the specifications of the collection {string}', async function (collection) { - try { - this.content = await this.kuzzle.collection.updateSpecifications(this.index, collection, {strict: false}); - } - catch (error) { - this.error = error; - } +When('I update the specifications of the collection {string}', function (collection) { + return this.kuzzle.collection + .updateSpecifications(this.index, collection, {strict: false}) + .then(content => { + this.content = content; + }) + .catch(err => { + this.error = err; + }); }); -When('I validate the specifications of {string}', async function (collection) { - this.content = await this.kuzzle.collection.validateSpecifications(this.index, collection, {strict: true}); +When('I validate the specifications of {string}', function (collection) { + return this.kuzzle.collection + .validateSpecifications(this.index, collection, {strict: true}) + .then(content => { + this.content = content; + }); }); -Then('the collection {string} should be empty', async function (collection) { - const result = await this.kuzzle.document.search(this.index, collection, {}); - should(result.total).eql(0); -}); - -Then(/^the collection(?: '(.*?)')? should exist$/, async function (collection) { - if (!collection) { - collection = this.collection; - } - const exists = await this.kuzzle.collection.exists(this.index, collection); - should(exists).be.true(); +Then('the collection {string} should be empty', function (collection) { + return this.kuzzle.document.search(this.index, collection, {}) + .then(result => should(result.total).eql(0)); }); -Then('the mapping of {string} should be updated', async function (collection) { - const mapping = await this.kuzzle.collection.getMapping(this.index, collection); +Then(/^the collection(?: '(.*?)')? should exist$/, function (collection) { + const c = collection || this.collection; - should(mapping[this.index].mappings[collection]).eql({ - dynamic: 'true', - properties: { - gordon: {type: 'keyword'} - } - }); + return this.kuzzle.collection.exists(this.index, c) + .then(exists => should(exists).be.true()); }); -Then('the specifications of {string} should be updated', async function (collection) { - const specifications = await this.kuzzle.collection.getSpecifications(this.index, collection); +Then('the mapping of {string} should be updated', function (collection) { + return this.kuzzle.collection.getMapping(this.index, collection) + .then(mapping => { + should(mapping[this.index].mappings[collection]).eql({ + dynamic: 'true', + properties: { + gordon: {type: 'keyword'} + } + }); + }); +}); - should(specifications.validation).eql({strict: false}); +Then('the specifications of {string} should be updated', function (collection) { + return this.kuzzle.collection.getSpecifications(this.index, collection) + .then(specifications => { + should(specifications.validation).eql({strict: false}); + }); }); -Then('the specifications of {string} must not exist', async function (collection) { - try { - await this.kuzzle.collection.getSpecifications(this.index, collection); - should(true).be.false(); - } - catch (error) { - should(error.status).eql(404); - } +Then('the specifications of {string} must not exist', function (collection, cb) { + this.kuzzle.collection.getSpecifications(this.index, collection) + .then(() => cb(new Error('Expected promise to be rejected'))) + .catch(error => { + try { + should(error.status).eql(404); + cb(); + } + catch (e) { + cb(e); + } + }); }); Then('they should be validated', function () { diff --git a/features/steps/document.js b/features/steps/document.js index 922daefb9..8f58873db 100644 --- a/features/steps/document.js +++ b/features/steps/document.js @@ -1,65 +1,80 @@ const { Given, When, Then } = require('cucumber'); const should = require('should'); -Given(/^the collection doesn't have a document with id '(.*?)'$/, async function (id) { - try { - this.content = await this.kuzzle.document.delete(this.index, this.collection, id); - } - catch (error) { - this.error = error; - } -}); - -Given('the collection has a document with id {string}', async function (id) { - this.content = await this.kuzzle.document.create( - this.index, - this.collection, - { a: 'document' }, - id, - { refresh: 'wait_for'} - ); +Given(/^the collection doesn't have a document with id '(.*?)'$/, function (id) { + return this.kuzzle.document.delete(this.index, this.collection, id) + .then(content => { + this.content = content; + }) + .catch(err => { + this.error = err; + }); +}); + +Given('the collection has a document with id {string}', function (id) { + return this.kuzzle.document + .create( + this.index, + this.collection, + { a: 'document' }, + id, + { refresh: 'wait_for'}) + .then(content => { + this.content = content; + }); }); -When('I check if {string} exists', async function (id) { - this.content = await this.kuzzle.document.exists(this.index, this.collection, id); +When('I check if {string} exists', function (id) { + return this.kuzzle.document.exists(this.index, this.collection, id) + .then(content => { + this.content = content; + }); }); -When('I count how many documents there is in the collection', async function () { - this.content = await this.kuzzle.document.count(this.index, this.collection, {}); +When('I count how many documents there is in the collection', function () { + return this.kuzzle.document.count(this.index, this.collection, {}) + .then(content => { + this.content = content; + }); }); -When('I create a document in {string}', async function (collection) { - this.content = await this.kuzzle.document.create( - this.index, - collection, - {a: 'document'}, - 'some-id', - {refresh: true} - ); +When('I create a document in {string}', function (collection) { + return this.kuzzle.document + .create( + this.index, + collection, + {a: 'document'}, + 'some-id', + {refresh: true}) + .then(content => { + this.content = content; + }); }); -When('I create a document with id {string}', async function (id) { +When('I create a document with id {string}', function (id) { this.ids = [id]; - try { - this.content = await this.kuzzle.document.create( + return this.kuzzle.document + .create( this.index, this.collection, {a: 'document'}, id, - {refresh: true}); - } - catch (error) { - this.error = error; - } + {refresh: true}) + .then(content => { + this.content = content; + }) + .catch(err => { + this.error = err; + }); }); -When('I create the documents [{string}, {string}]', async function (id1, id2) { +When('I create the documents [{string}, {string}]', function (id1, id2) { this.ids = [id1, id2]; - try { - this.content = await this.kuzzle.document.mCreate( + return this.kuzzle.document + .mCreate( this.index, this.collection, [ @@ -68,37 +83,38 @@ When('I create the documents [{string}, {string}]', async function (id1, id2) { ], { refresh: 'wait_for' - } - ); - } - catch (error) { - this.error = error; - } - + }) + .then(content => { + this.content = content; + }) + .catch(err => { + this.error = err; + }); }); -When('I createOrReplace a document with id {string}', async function (id) { +When('I createOrReplace a document with id {string}', function (id) { this.ids = [id]; - try { - this.content = await this.kuzzle.document.createOrReplace( + return this.kuzzle.document + .createOrReplace( this.index, this.collection, id, {a: 'replaced document'}, - {refresh: true} - ); - } - catch (error) { - this.error = error; - } + {refresh: true}) + .then(content => { + this.content = content; + }) + .catch(err => { + this.error = err; + }); }); -When('I createOrReplace the documents [{string}, {string}]', async function (id1, id2) { +When('I createOrReplace the documents [{string}, {string}]', function (id1, id2) { this.ids = [id1, id2]; - try { - this.content = await this.kuzzle.document.mCreateOrReplace( + return this.kuzzle.document + .mCreateOrReplace( this.index, this.collection, [ @@ -107,85 +123,93 @@ When('I createOrReplace the documents [{string}, {string}]', async function (id1 ], { refresh: 'wait_for' - } - ); - } - catch (error) { - this.error = error; - } + }) + .then(content => { + this.content = content; + }) + .catch(err => { + this.error = err; + }); }); -When('I delete the document with id {string}', async function (id) { +When('I delete the document with id {string}', function (id) { this.ids = [id]; - try { - this.content = await this.kuzzle.document.delete(this.index, this.collection, id); - } - catch (error) { - this.error = error; - } + return this.kuzzle.document.delete(this.index, this.collection, id) + .then(content => { + this.content = content; + }) + .catch(err => { + this.error = err; + }); }); -When('I delete the documents [{string}, {string}]', async function (id1, id2) { +When('I delete the documents [{string}, {string}]', function (id1, id2) { this.ids = [id1, id2]; - try { - this.content = await this.kuzzle.document.mDelete( + return this.kuzzle.document + .mDelete( this.index, this.collection, [id1, id2], - {refresh: true} - ); - } - catch (error) { - this.error = error; - } + {refresh: true}) + .then(content => { + this.content = content; + }) + .catch(error => { + this.error = error; + }); }); -When('I replace a document with id {string}', async function (id) { +When('I replace a document with id {string}', function (id) { this.ids = [id]; - try { - this.content = await this.kuzzle.document.replace( + return this.kuzzle.document + .replace( this.index, this.collection, id, {a: 'replaced document'}, - {refresh: true} - ); - } - catch (error) { - this.error = error; - } + {refresh: true}) + .then(content => { + this.content = content; + }) + .catch(err => { + this.error = err; + }); }); -When('I replace the documents [{string}, {string}]', async function (id1, id2) { +When('I replace the documents [{string}, {string}]', function (id1, id2) { this.ids = [id1, id2]; - try { - this.content = await this.kuzzle.document.mReplace( + return this.kuzzle.document + .mReplace( this.index, this.collection, [ {_id: id1, body: {a: 'replaced document'}}, {_id: id2, body: {a: 'replaced document'}} ], - {refresh: true} - ); - } - catch (error) { - this.error = error; - } + {refresh: true}) + .then(content => { + this.content = content; + }) + .catch(err => { + this.error = err; + }); }); -When('I get documents [{string}, {string}]', async function (id1, id2) { +When('I get documents [{string}, {string}]', function (id1, id2) { this.ids = [id1, id2]; - this.content = await this.kuzzle.document.mGet(this.index, this.collection, [id1, id2]); + return this.kuzzle.document.mGet(this.index, this.collection, [id1, id2]) + .then(content => { + this.content = content; + }); }); -When('I search a document with id {string}', async function (id) { - try { - this.content = await this.kuzzle.document.search( +When('I search a document with id {string}', function (id) { + return this.kuzzle.document + .search( this.index, this.collection, { @@ -194,71 +218,81 @@ When('I search a document with id {string}', async function (id) { _id: id } } - }); - } - catch (error) { - this.error = error; - } -}); - -When('I search documents matching {string} with from {int} and size {int}', async function (query, from, size) { - this.content = await this.kuzzle.document.search( - this.index, - this.collection, - JSON.parse(query), - { - from, - size - } - ); + }) + .then(content => { + this.content = content; + }) + .catch(err => { + this.error = err; + }); +}); + +When('I search documents matching {string} with from {int} and size {int}', function (query, from, size) { + return this.kuzzle.document + .search( + this.index, + this.collection, + JSON.parse(query), + { from, size }) + .then(content => { + this.content = content; + }); }); -When('I search the next documents', async function () { - this.content = await this.content.next(); +When('I search the next documents', function () { + return this.content.next() + .then(content => { + this.content = content; + }); }); -When('I update a document with id {string}', async function (id) { +When('I update a document with id {string}', function (id) { this.ids = [id]; - try { - this.content = await this.kuzzle.document.update( + return this.kuzzle.document + .update( this.index, this.collection, id, - {some: 'update'} - ); - } - catch (error) { - this.error = error; - } -}); - -When('I update the document with id {string} and content {string} = {string}', async function (id, key, val) { - this.content = await this.kuzzle.document.update( - this.index, - this.collection, - id, - {[key]: val} - ); + {some: 'update'}) + .then(content => { + this.content = content; + }) + .catch(err => { + this.error = err; + }); +}); + +When('I update the document with id {string} and content {string} = {string}', function (id, key, val) { + return this.kuzzle.document + .update( + this.index, + this.collection, + id, + { [key]: val }) + .then(content => { + this.content = content; + }); }); -When('I update the documents [{string}, {string}]', async function (id1, id2) { +When('I update the documents [{string}, {string}]', function (id1, id2) { this.ids = [id1, id2]; - try { - this.content = await this.kuzzle.document.mUpdate( + return this.kuzzle.document + .mUpdate( this.index, this.collection, [ {_id: id1, body: {a: 'replaced document', some: 'update'}}, {_id: id2, body: {a: 'replaced document', some: 'update'}} ], - {refresh: true} - ); - } - catch (error) { - this.error = error; - } + { refresh: true }) + .then(content => { + this.content = content; + }) + .catch(err => { + this.error = err; + }); }); @@ -267,26 +301,28 @@ Then('I get an error with message {string}', function (message) { should(this.error.message).eql(message); }); -Then('I must have {int} documents in the collection', async function (number) { - const count = await this.kuzzle.document.count(this.index, this.collection, {}); - should(count).eql(number); +Then('I must have {int} documents in the collection', function (number) { + return this.kuzzle.document.count(this.index, this.collection, {}) + .then(count => should(count).eql(number)); }); -Then('the document is successfully created', async function () { - const document = await this.kuzzle.document.get(this.index, this.collection, this.ids[0]); - should(document) - .be.an.Object(); +Then('the document is successfully created', function () { + return this.kuzzle.document.get(this.index, this.collection, this.ids[0]) + .then(document => should(document).be.an.Object()); }); -Then('the document is successfully deleted', async function () { - try { - await this.kuzzle.document.get(this.index, this.collection, this.ids[0]); - // should fail - should(true).be.false(); - } - catch (error) { - should(error.status).eql(404); - } +Then('the document is successfully deleted', function (cb) { + this.kuzzle.document.get(this.index, this.collection, this.ids[0]) + .then(() => cb(new Error('Expected promise to be rejected'))) + .catch(error => { + try { + should(error.status).eql(404); + cb(); + } + catch (e) { + cb(e); + } + }); }); Then(/^the document is (successfully|not) found$/, function (yesno) { @@ -295,36 +331,29 @@ Then(/^the document is (successfully|not) found$/, function (yesno) { should(this.content.total).eql(yesno === 'successfully' ? 1 : 0); }); -Then('the document is successfully replaced', async function () { - const document = await this.kuzzle.document.get(this.index, this.collection, this.ids[0]); - should(document._source.a).eql('replaced document'); +Then('the document is successfully replaced', function () { + return this.kuzzle.document.get(this.index, this.collection, this.ids[0]) + .then(document => should(document._source.a).eql('replaced document')); }); -Then('the document is successfully updated', async function () { - const document = await this.kuzzle.document.get(this.index, this.collection, this.ids[0]); - - should(document._source.some).eql('update'); +Then('the document is successfully updated', function () { + return this.kuzzle.document.get(this.index, this.collection, this.ids[0]) + .then(document => should(document._source.some).eql('update')); }); -Then('the document {string} should be created', async function (id) { - const document = await this.kuzzle.document.get(this.index, this.collection, id); - - should(document) - .not.be.null(); +Then('the document {string} should be created', function (id) { + return this.kuzzle.document.get(this.index, this.collection, id) + .then(document => should(document).not.be.null()); }); -Then('the document {string} should be replaced', async function (id) { - const document = await this.kuzzle.document.get(this.index, this.collection, id); - - should(document._source.a) - .eql('replaced document'); +Then('the document {string} should be replaced', function (id) { + return this.kuzzle.document.get(this.index, this.collection, id) + .then(document => should(document._source.a).eql('replaced document')); }); -Then('the document {string} should be updated', async function (id) { - const document = await this.kuzzle.document.get(this.index, this.collection, id); - - should(document._source.some) - .eql('update'); +Then('the document {string} should be updated', function (id) { + return this.kuzzle.document.get(this.index, this.collection, id) + .then(document => should(document._source.some).eql('update')); }); Then(/^the document should (not )?exist$/, function (not) { diff --git a/features/steps/index.js b/features/steps/index.js index e88a51774..451269e7c 100644 --- a/features/steps/index.js +++ b/features/steps/index.js @@ -1,68 +1,84 @@ const { Given, When, Then } = require('cucumber'); const should = require('should'); -Given('there is an index {string}', async function (index) { - exists = await this.kuzzle.index.exists(index); +Given('there is an index {string}', function (index) { + return this.kuzzle.index.exists(index) + .then(exists => { + if (!exists) { + return this.kuzzle.index.create(index); + } - if (!exists) { - await this.kuzzle.index.create(index); - } - - this.index = index; + return null; + }) + .then(() => { + this.index = index; + }); }); -Given('there is no index called {string}', async function (index) { - try { - this.content = await this.kuzzle.index.delete(index); - } - catch (error) { - // do nothing - } +Given('there is no index called {string}', function (index) { + return this.kuzzle.index.delete(index) + .then(content => { + this.content = content; + }) + .catch(() => { /* do nothing */ }); }); -Given('there is the indexes {string} and {string}', async function (index1, index2) { - for (const index of [index1, index2]) { - const exists = await this.kuzzle.index.exists(index); - +Given('there is the indexes {string} and {string}', function (index1, index2) { + const createIndex = (index, exists) => { if (!exists) { - await this.kuzzle.index.create(index); + return this.kuzzle.index.create(index); } - } + + return null; + }; + + return this.kuzzle.index.exists(index1) + .then(exists => createIndex(index1, exists)) + .then(() => this.kuzzle.index.exists(index2)) + .then(exists => createIndex(index2, exists)); }); -When('I create an index called {string}', async function (index) { - try { - this.content = await this.kuzzle.index.create(index); - this.index = index; - } - catch (error) { - this.error = error; - } +When('I create an index called {string}', function (index) { + return this.kuzzle.index.create(index) + .then(content => { + this.content = content; + this.index = index; + }) + .catch(err => { + this.error = err; + }); }); -When('I delete the indexes {string} and {string}', async function (index1, index2) { - this.content = await this.kuzzle.index.mDelete([index1, index2]); +When('I delete the indexes {string} and {string}', function (index1, index2) { + return this.kuzzle.index.mDelete([index1, index2]) + .then(content => { + this.content = content; + }); }); -When('I list indexes', async function () { - try { - this.content = await this.kuzzle.index.list(); - } - catch (error) { - this.error = error; - } +When('I list indexes', function () { + return this.kuzzle.index.list() + .then(content => { + this.content = content; + }) + .catch(err => { + this.error = err; + }); }); -Then('the index should exist', async function () { - const exists = await this.kuzzle.index.exists(this.index); - should(exists).be.true(); +Then('the index should exist', function () { + return this.kuzzle.index.exists(this.index) + .then(exists =>should(exists).be.true()); }); -Then('indexes {string} and {string} don\'t exist', async function (index1, index2) { - for (const index of [index1, index2]) { - const exists = await this.kuzzle.index.exists(index); - should(exists).be.false(); - } +Then('indexes {string} and {string} don\'t exist', function (index1, index2) { + const check = index => { + return this.kuzzle.index.exists(index) + .then(exists => should(exists).be.false()); + }; + + return check(index1) + .then(() => check(index2)); }); diff --git a/features/steps/realtime.js b/features/steps/realtime.js index b8ee6007b..058e062d0 100644 --- a/features/steps/realtime.js +++ b/features/steps/realtime.js @@ -1,20 +1,24 @@ const {Given, When, Then} = require('cucumber'); const should = require('should'); -Given(/^I subscribe to '(.*?)'(?: with '(.*)' as filter)?$/, async function (collection, filter) { +Given(/^I subscribe to '(.*?)'(?: with '(.*)' as filter)?$/, function (collection, filter) { if (!filter) { filter = '{}'; } - this.content = await this.kuzzle.realtime.subscribe(this.index, collection, JSON.parse(filter), this.callback); + return this.kuzzle.realtime + .subscribe(this.index, collection, JSON.parse(filter), this.callback) + .then(content => { + this.content = content; + }); }); -Given('I unsubscribe', async function () { - await this.kuzzle.realtime.unsubscribe(this.content); +Given('I unsubscribe', function () { + return this.kuzzle.realtime.unsubscribe(this.content); }); -When('I publish a document', async function () { - await this.kuzzle.realtime.publish(this.index, this.collection, { +When('I publish a document', function () { + return this.kuzzle.realtime.publish(this.index, this.collection, { a: 'document' }); }); @@ -22,14 +26,24 @@ When('I publish a document', async function () { Then('I receive a notification', function (cb) { setTimeout(() => { - should(this.notifications.length).eql(1); - cb(); + try { + should(this.notifications.length).eql(1); + cb(); + } + catch (e) { + cb(e); + } }, 1000); }); Then('I do not receive a notification', function (cb) { setTimeout(() => { - should(this.notifications.length).eql(0); - cb(); + try { + should(this.notifications.length).eql(0); + cb(); + } + catch (e) { + cb(e); + } }, 1000); }); diff --git a/features/steps/security.js b/features/steps/security.js index da0c8c0d2..2ec6166a0 100644 --- a/features/steps/security.js +++ b/features/steps/security.js @@ -1,47 +1,47 @@ const {Given, When} = require('cucumber'); -Given('there is an user with id {string}', async function (id) { +Given('there is an user with id {string}', function (id) { this.user = id; - try { - await this.kuzzle.security.createOrReplaceProfile('test', { - policies: [{roleId: 'admin'}] - }); - - this.content = await this.kuzzle.security.createUser(id, { + return this.kuzzle.security + .createOrReplaceProfile( + 'test', + { policies: [{roleId: 'admin'}] }) + .then(() => this.kuzzle.security.createUser(id, { content: { profileIds: ['test'] }, credentials: {} - }); - } - catch (error) { - // do nothing - } + })) + .then(content => { + this.content = content; + }) + .catch(() => { /* do nothing */ }); }); -Given('the user has {string} credentials with name {string} and password {string}', async function (strategy, username, password) { - try { - await this.kuzzle.security.createCredentials( +Given('the user has {string} credentials with name {string} and password {string}', function (strategy, username, password) { + return this.kuzzle.security + .createCredentials( strategy, this.user, - { username, password }); - } - catch (error) { - await this.kuzzle.security.updateCredentials( + { username, password }) + .catch(() => this.kuzzle.security.updateCredentials( strategy, this.user, - { username, password }); - } + { username, password })); }); -When('I get my user info', async function () { - this.content = await this.kuzzle.security.getUser(this.user); +When('I get my user info', function () { + return this.kuzzle.security.getUser(this.user) + .then(content => { + this.content = content; + }); }); -When('I update my user custom data with the pair {string}:{string}', async function (key, val) { - this.content = await this.kuzzle.security.updateUser(this.user, { - [key]: val - }); +When('I update my user custom data with the pair {string}:{string}', function (key, val) { + return this.kuzzle.security.updateUser(this.user, { [key]: val }) + .then(content => { + this.content = content; + }); }); diff --git a/features/support/hooks.js b/features/support/hooks.js index d913f0669..e36da61f6 100644 --- a/features/support/hooks.js +++ b/features/support/hooks.js @@ -2,9 +2,9 @@ const { Before, AfterAll, BeforeAll } = require('cucumber'); let _world; -Before(async function () { +Before(function () { _world = this; - await clean(); + return clean(); }); BeforeAll(function () { @@ -19,26 +19,21 @@ BeforeAll(function () { this.notifications = []; }); -AfterAll(async function () { - await clean(); +AfterAll(function () { + return clean(); }); -async function clean () { +function clean () { const kuzzle = _world.kuzzle; - try { - await kuzzle.connect(); - const indices = await kuzzle.index.list(); - - for (const index of indices) { - await kuzzle.index.delete(index); - } - } - catch (error) { - // rethrow to get a readable error - // eslint-disable-next-line no-console - console.error(error); - throw error; - } + return kuzzle.connect() + .then(() => kuzzle.index.list()) + .then(indices => Promise.all(indices.map(i => kuzzle.index.delete(i)))) + .catch(error => { + // rethrow to get a readable error + // eslint-disable-next-line no-console + console.error(error); + throw error; + }); } diff --git a/package-lock.json b/package-lock.json index 459660593..eea749cc2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1108,8 +1108,7 @@ "acorn-jsx": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.2.tgz", - "integrity": "sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw==", - "dev": true + "integrity": "sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw==" }, "agent-base": { "version": "4.3.0", @@ -1206,7 +1205,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -1323,8 +1321,7 @@ "astral-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" }, "async-each": { "version": "1.0.3", @@ -1748,8 +1745,7 @@ "chardet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, "chokidar": { "version": "2.1.8", @@ -1853,8 +1849,7 @@ "cli-width": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" }, "cliui": { "version": "4.1.0", @@ -2109,7 +2104,6 @@ "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -2229,8 +2223,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": "2.0.0", @@ -2399,8 +2392,7 @@ "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" }, "emojis-list": { "version": "2.1.0", @@ -2535,55 +2527,52 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "eslint": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.3.0.tgz", - "integrity": "sha512-ZvZTKaqDue+N8Y9g0kp6UPZtS4FSY3qARxBs7p4f0H0iof381XHduqVerFWtK8DPtKmemqbqCFENWSQgPR/Gow==", - "dev": true, + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", + "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", "requires": { "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", + "ajv": "^6.9.1", "chalk": "^2.1.0", "cross-spawn": "^6.0.5", "debug": "^4.0.1", "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.2", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.1", + "eslint-scope": "^4.0.3", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^5.0.1", "esquery": "^1.0.1", "esutils": "^2.0.2", "file-entry-cache": "^5.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", + "glob": "^7.1.2", "globals": "^11.7.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^6.4.1", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "inquirer": "^6.2.2", + "js-yaml": "^3.13.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.3.0", - "lodash": "^4.17.14", + "lodash": "^4.17.11", "minimatch": "^3.0.4", "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", "progress": "^2.0.0", "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", + "semver": "^5.5.1", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "dependencies": { "ajv": { "version": "6.10.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "dev": true, "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", @@ -2592,16 +2581,14 @@ } }, "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -2610,7 +2597,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -2621,38 +2607,19 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, "requires": { "esutils": "^2.0.2" } }, - "eslint-scope": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", - "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", - "dev": true - }, "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" }, "file-entry-cache": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", - "dev": true, "requires": { "flat-cache": "^2.0.1" } @@ -2661,73 +2628,37 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", - "dev": true, "requires": { "flatted": "^2.0.0", "rimraf": "2.6.3", "write": "1.0.3" } }, - "glob-parent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.0.0.tgz", - "integrity": "sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, "requires": { "glob": "^7.1.3" } }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^3.0.0" } }, - "strip-json-comments": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", - "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", - "dev": true - }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -2736,7 +2667,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, "requires": { "mkdirp": "^0.5.1" } @@ -2810,57 +2740,15 @@ } }, "eslint-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-3.0.0.tgz", - "integrity": "sha512-rdxyQ0i9VlhwVlR6oEzrIft8WNKYSD2/cOAJ1YVH/F76gAta7Zv1Dr5xJOUyx0fAsHB5cKNz9hwlUVLMFsQlPA==", - "dev": true, + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-2.2.1.tgz", + "integrity": "sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg==", "requires": { - "loader-fs-cache": "^1.0.2", - "loader-utils": "^1.2.3", - "object-hash": "^1.3.1", - "schema-utils": "^2.1.0" - }, - "dependencies": { - "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "dev": true, - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", - "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", - "dev": true - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "schema-utils": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.2.0.tgz", - "integrity": "sha512-5EwsCNhfFTZvUreQhx/4vVQpJ/lnCAkgoIHLhSpp4ZirE+4hzFvdJi0FMub6hxbFVBJYSpeVVmon+2e7uEGRrA==", - "dev": true, - "requires": { - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1" - } - } + "loader-fs-cache": "^1.0.0", + "loader-utils": "^1.0.2", + "object-assign": "^4.0.1", + "object-hash": "^1.1.4", + "rimraf": "^2.6.1" } }, "eslint-scope": { @@ -2876,7 +2764,6 @@ "version": "1.4.2", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz", "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==", - "dev": true, "requires": { "eslint-visitor-keys": "^1.0.0" } @@ -2884,45 +2771,34 @@ "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==", - "dev": true + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==" }, "espree": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.1.tgz", - "integrity": "sha512-EYbr8XZUhWbYCqQRW0duU5LxzL5bETN6AjKBGy1302qqzPaCH10QbRg3Wvco79Z8x9WbiE8HYB4e75xl6qUYvQ==", - "dev": true, + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", + "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", "requires": { - "acorn": "^7.0.0", - "acorn-jsx": "^5.0.2", - "eslint-visitor-keys": "^1.1.0" + "acorn": "^6.0.7", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" }, "dependencies": { "acorn": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.0.0.tgz", - "integrity": "sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ==", - "dev": true - }, - "eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", - "dev": true + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz", + "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==" } } }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "esquery": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", - "dev": true, "requires": { "estraverse": "^4.0.0" } @@ -3048,7 +2924,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, "requires": { "chardet": "^0.7.0", "iconv-lite": "^0.4.24", @@ -3134,8 +3009,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=" }, "figgy-pudding": { "version": "3.5.1", @@ -3146,7 +3020,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, "requires": { "escape-string-regexp": "^1.0.5" } @@ -3242,8 +3115,7 @@ "flatted": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", - "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", - "dev": true + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==" }, "flush-write-stream": { "version": "1.1.1", @@ -3803,8 +3675,7 @@ "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=", - "dev": true + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" }, "get-caller-file": { "version": "1.0.3", @@ -4058,7 +3929,6 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" } @@ -4076,8 +3946,7 @@ "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" }, "ignore-walk": { "version": "3.0.1", @@ -4092,7 +3961,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz", "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==", - "dev": true, "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -4101,8 +3969,7 @@ "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" } } }, @@ -4140,7 +4007,6 @@ "version": "6.5.2", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", - "dev": true, "requires": { "ansi-escapes": "^3.2.0", "chalk": "^2.4.2", @@ -4160,20 +4026,17 @@ "ansi-escapes": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" }, "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -4182,7 +4045,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -4193,7 +4055,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, "requires": { "ansi-regex": "^4.1.0" } @@ -4202,7 +4063,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -4320,8 +4180,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": { "version": "1.0.3", @@ -4396,8 +4255,7 @@ "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" }, "is-regex": { "version": "1.0.4", @@ -4447,8 +4305,7 @@ "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": "3.0.1", @@ -4565,9 +4422,9 @@ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" }, "js-yaml": { - "version": "3.13.0", - "resolved": "", - "dev": true, + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -4592,8 +4449,7 @@ "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=", - "dev": true + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" }, "json5": { "version": "2.1.0", @@ -4643,7 +4499,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" @@ -4673,7 +4528,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.2.tgz", "integrity": "sha512-70IzT/0/L+M20jUlEqZhZyArTU6VKLRTYRDAYN26g4jfzpJqjipLL3/hgYpySqI9PwsVRHHFja0LfEmsx9X2Cw==", - "dev": true, "requires": { "find-cache-dir": "^0.1.1", "mkdirp": "0.5.1" @@ -4683,7 +4537,6 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", - "dev": true, "requires": { "commondir": "^1.0.1", "mkdirp": "^0.5.1", @@ -4694,7 +4547,6 @@ "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.0.0", "pinkie-promise": "^2.0.0" @@ -4704,7 +4556,6 @@ "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.0" } @@ -4713,7 +4564,6 @@ "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.0.0" } @@ -5143,8 +4993,7 @@ "mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" }, "mz": { "version": "2.7.0", @@ -5184,8 +5033,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=" }, "neo-async": { "version": "2.6.1", @@ -5207,8 +5055,7 @@ "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" }, "nise": { "version": "1.5.2", @@ -5443,8 +5290,7 @@ "object-hash": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", - "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", - "dev": true + "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==" }, "object-keys": { "version": "1.1.1", @@ -5526,7 +5372,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.4", @@ -5615,8 +5460,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-defer": { "version": "1.0.0", @@ -5705,7 +5549,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, "requires": { "callsites": "^3.0.0" }, @@ -5713,8 +5556,7 @@ "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" } } }, @@ -5769,14 +5611,12 @@ "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=", - "dev": true + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" }, "path-parse": { "version": "1.0.6", @@ -5837,14 +5677,12 @@ "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.0" } @@ -5871,8 +5709,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=" }, "private": { "version": "0.1.8", @@ -5892,8 +5729,7 @@ "progress": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.1.tgz", - "integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==", - "dev": true + "integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==" }, "promise-inflight": { "version": "1.0.1", @@ -6097,8 +5933,7 @@ "regexpp": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", - "dev": true + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==" }, "regexpu-core": { "version": "4.5.5", @@ -6474,7 +6309,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "dev": true, "requires": { "is-promise": "^2.1.0" } @@ -6506,7 +6340,6 @@ "version": "6.5.3", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", - "dev": true, "requires": { "tslib": "^1.9.0" } @@ -6527,8 +6360,7 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "schema-utils": { "version": "1.0.0", @@ -6635,7 +6467,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" } @@ -6643,8 +6474,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=" }, "should": { "version": "13.2.3", @@ -6956,8 +6786,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=" }, "ssri": { "version": "6.0.1", @@ -7081,7 +6910,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" @@ -7090,14 +6918,12 @@ "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=" }, "strip-ansi": { "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" } @@ -7136,8 +6962,7 @@ "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=", - "dev": true + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, "supports-color": { "version": "2.0.0", @@ -7149,7 +6974,6 @@ "version": "5.4.6", "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", - "dev": true, "requires": { "ajv": "^6.10.2", "lodash": "^4.17.14", @@ -7161,7 +6985,6 @@ "version": "6.10.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "dev": true, "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", @@ -7172,14 +6995,12 @@ "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -7187,20 +7008,17 @@ "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "slice-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, "requires": { "ansi-styles": "^3.2.0", "astral-regex": "^1.0.0", @@ -7211,7 +7029,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, "requires": { "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", @@ -7222,7 +7039,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, "requires": { "ansi-regex": "^4.1.0" } @@ -7305,8 +7121,7 @@ "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" }, "thenify": { "version": "3.3.0", @@ -7329,8 +7144,7 @@ "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, "through2": { "version": "2.0.5", @@ -7363,7 +7177,6 @@ "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, "requires": { "os-tmpdir": "~1.0.2" } @@ -7435,7 +7248,6 @@ "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" } @@ -7641,12 +7453,6 @@ "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", "dev": true }, - "v8-compile-cache": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", - "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", - "dev": true - }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -7774,7 +7580,6 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, "requires": { "isexe": "^2.0.0" } @@ -7797,8 +7602,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=" }, "worker-farm": { "version": "1.7.0", diff --git a/package.json b/package.json index 10aac06ca..e9a33305f 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,8 @@ "@babel/preset-env": "^7.6.0", "audit": "0.0.6", "babel-loader": "^8.0.6", + "eslint": "^5.16.0", + "eslint-loader": "^2.2.1", "min-req-promise": "^1.0.1", "ora": "^3.4.0", "webpack": "^4.39.3", @@ -51,9 +53,7 @@ "devDependencies": { "codecov": "^3.5.0", "cucumber": "^5.1.0", - "eslint": "^6.3.0", "eslint-friendly-formatter": "^4.0.1", - "eslint-loader": "^3.0.0", "mocha": "6.2.0", "mock-require": "^3.0.3", "nyc": "^14.1.1", diff --git a/src/protocols/http.js b/src/protocols/http.js index 00e5ab8b0..cff3e36d6 100644 --- a/src/protocols/http.js +++ b/src/protocols/http.js @@ -18,8 +18,12 @@ class HttpWrapper extends KuzzleAbstractProtocol { this.customRoutes = options.customRoutes || {}; - for (const [controller, definition] of Object.entries(this.customRoutes)) { - for (const [action, route] of Object.entries(definition)) { + for (const controller of Object.keys(this.customRoutes)) { + const definition = this.customRoutes[controller]; + + for (const action of Object.keys(definition)) { + const route = definition[action]; + if (!(typeof route.url === 'string' && route.url.length > 0)) { throw new Error( `Incorrect URL for custom route ${controller}:${action}.`); @@ -281,11 +285,14 @@ class HttpWrapper extends KuzzleAbstractProtocol { } _constructRoutes (publicApi) { - const apiRoutes = Object.entries(publicApi) + const apiRoutes = Object.keys(publicApi) + .map(key => [key, publicApi[key]]) .reduce((routes, [controller, definition]) => { routes[controller] = {}; - for (const [action, { http }] of Object.entries(definition)) { + for (const action of Object.keys(definition)) { + const { http } = definition[action]; + if (http && http.length === 1) { routes[controller][action] = http[0]; } else if (http && http.length > 1) { @@ -296,8 +303,8 @@ class HttpWrapper extends KuzzleAbstractProtocol { return routes; }, {}); - for (const [controller, definition] of Object.entries(this.customRoutes)) { - apiRoutes[controller] = definition; + for (const controller of Object.keys(this.customRoutes)) { + apiRoutes[controller] = this.customRoutes[controller]; } return apiRoutes; From 96125e3ba226764b025ac1b7cc14e6419383d236 Mon Sep 17 00:00:00 2001 From: scottinet Date: Thu, 12 Sep 2019 14:34:35 +0200 Subject: [PATCH 2/3] [doc] fix failing tests due to stricter controls on roles --- .../snippets/update-profile.test.yml | 25 ++++++-- .../update-role/snippets/update-role.js | 61 +++++++++---------- .../update-role/snippets/update-role.test.yml | 4 +- package-lock.json | 43 ++++--------- package.json | 2 +- 5 files changed, 63 insertions(+), 72 deletions(-) diff --git a/doc/6/controllers/security/update-profile/snippets/update-profile.test.yml b/doc/6/controllers/security/update-profile/snippets/update-profile.test.yml index 153b82ecb..945d3707e 100644 --- a/doc/6/controllers/security/update-profile/snippets/update-profile.test.yml +++ b/doc/6/controllers/security/update-profile/snippets/update-profile.test.yml @@ -1,10 +1,23 @@ name: security#updateProfile -description: update profile +description: updates a security profile definition hooks: - before: > - curl -H "Content-type: application/json" -d '{ - "policies": [] - }' kuzzle:7512/profiles/myProfile/_create - after: curl -XDELETE kuzzle:7512/profiles/myProfile + before: + - > + curl -H "Content-type: application/json" -d '{ + "policies": [] + }' kuzzle:7512/profiles/myProfile/_create + - > + curl -H "Content-type: application/json" -d '{ + "controllers": { + "*": { + "actions": { + "*": true + } + } + } + }' kuzzle:7512/roles/privileged/_create + after: + - curl -XDELETE kuzzle:7512/profiles/myProfile?refresh=wait_for + - curl -XDELETE kuzzle:7512/roles/privileged template: default expected: '^ { roleId: ''privileged'', restrictedTo: \[Array\] } \] }$' diff --git a/doc/6/controllers/security/update-role/snippets/update-role.js b/doc/6/controllers/security/update-role/snippets/update-role.js index ca54743d2..642e74578 100644 --- a/doc/6/controllers/security/update-role/snippets/update-role.js +++ b/doc/6/controllers/security/update-role/snippets/update-role.js @@ -1,39 +1,36 @@ try { - const response = await kuzzle.security.updateRole( - 'read-only', - { - controllers: { - auth: { - actions: { - getCurrentUser: true, - getMyCredentials: true, - getMyRights: true, - logout: true - } - }, - collection: { - actions: { - getMapping: true, - list: true - } - }, - document: { - actions: { - count: true, - get: true, - mGet: true, - scroll: true, - search: true - } - }, - index: { - actions: { - list: true - } + const response = await kuzzle.security.updateRole('read-only', { + controllers: { + auth: { + actions: { + getCurrentUser: true, + getMyCredentials: true, + getMyRights: true, + logout: true + } + }, + collection: { + actions: { + getMapping: true, + list: true + } + }, + document: { + actions: { + count: true, + get: true, + mGet: true, + scroll: true, + search: true + } + }, + index: { + actions: { + list: true } } } - ); + }); console.log(response); /* diff --git a/doc/6/controllers/security/update-role/snippets/update-role.test.yml b/doc/6/controllers/security/update-role/snippets/update-role.test.yml index e865c6c1b..5a9f5472f 100644 --- a/doc/6/controllers/security/update-role/snippets/update-role.test.yml +++ b/doc/6/controllers/security/update-role/snippets/update-role.test.yml @@ -4,9 +4,9 @@ hooks: before: > curl -f -H "Content-type: application/json" -d '{ "controllers": { - "*": { + "auth": { "actions": { - "*": false + "login": true } } } diff --git a/package-lock.json b/package-lock.json index eea749cc2..31e694a04 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "kuzzle-sdk", - "version": "6.2.3", + "version": "6.2.4", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -3203,8 +3203,7 @@ }, "ansi-regex": { "version": "2.1.1", - "bundled": true, - "optional": true + "bundled": true }, "aproba": { "version": "1.2.0", @@ -3222,13 +3221,11 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true, - "optional": true + "bundled": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3241,18 +3238,15 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true, - "optional": true + "bundled": true }, "concat-map": { "version": "0.0.1", - "bundled": true, - "optional": true + "bundled": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true, - "optional": true + "bundled": true }, "core-util-is": { "version": "1.0.2", @@ -3355,8 +3349,7 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, - "optional": true + "bundled": true }, "ini": { "version": "1.3.5", @@ -3366,7 +3359,6 @@ "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -3379,20 +3371,17 @@ "minimatch": { "version": "3.0.4", "bundled": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "0.0.8", - "bundled": true, - "optional": true + "bundled": true }, "minipass": { "version": "2.3.5", "bundled": true, - "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -3409,7 +3398,6 @@ "mkdirp": { "version": "0.5.1", "bundled": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -3482,8 +3470,7 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, - "optional": true + "bundled": true }, "object-assign": { "version": "4.1.1", @@ -3493,7 +3480,6 @@ "once": { "version": "1.4.0", "bundled": true, - "optional": true, "requires": { "wrappy": "1" } @@ -3569,8 +3555,7 @@ }, "safe-buffer": { "version": "5.1.2", - "bundled": true, - "optional": true + "bundled": true }, "safer-buffer": { "version": "2.1.2", @@ -3600,7 +3585,6 @@ "string-width": { "version": "1.0.2", "bundled": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3618,7 +3602,6 @@ "strip-ansi": { "version": "3.0.1", "bundled": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3657,13 +3640,11 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, - "optional": true + "bundled": true }, "yallist": { "version": "3.0.3", - "bundled": true, - "optional": true + "bundled": true } } }, diff --git a/package.json b/package.json index e9a33305f..4996682e3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "kuzzle-sdk", - "version": "6.2.3", + "version": "6.2.4", "description": "Official Javascript SDK for Kuzzle", "author": "The Kuzzle Team ", "repository": { From fc01ea994e537a0f4f19b5b2e4158123015e3eff Mon Sep 17 00:00:00 2001 From: scottinet Date: Thu, 12 Sep 2019 14:53:22 +0200 Subject: [PATCH 3/3] [doc] fix tests on the server controller --- .../get-config/snippets/get-config.test.yml | 3 +- .../server/info/snippets/info.test.yml | 2 +- package-lock.json | 188 +++++++++++++----- package.json | 4 +- 4 files changed, 146 insertions(+), 51 deletions(-) diff --git a/doc/6/controllers/server/get-config/snippets/get-config.test.yml b/doc/6/controllers/server/get-config/snippets/get-config.test.yml index 9d79d6cfa..55cca6169 100644 --- a/doc/6/controllers/server/get-config/snippets/get-config.test.yml +++ b/doc/6/controllers/server/get-config/snippets/get-config.test.yml @@ -4,7 +4,6 @@ hooks: before: after: template: default -expected: ^(Kuzzle Server configuration:) {("dump":{.*}),("limits":{.*}),("plugins":{.*}),("queues":{.*}),("repositories":{.*}),("server":{.*}),("services":{.*}),("stats":{.*}),("validation":{.*}),("_":.*),("internal":{.*}),("version":"[0-9]\.[0-9]\.[0-9]")}$ - +expected: ^(Kuzzle Server configuration:) {("dump":{.*}),("limits":{.*}),("plugins":{.*}),("queues":{.*}),("repositories":{.*}),("server":{.*}),("services":{.*}),("stats":{.*}),("validation":{.*}),("_":.*),("internal":{.*}),("version":"[0-9]+\.[0-9]+\.[0-9]+")}$ sdk: js version: 6 diff --git a/doc/6/controllers/server/info/snippets/info.test.yml b/doc/6/controllers/server/info/snippets/info.test.yml index f33e1acc7..154a171d8 100644 --- a/doc/6/controllers/server/info/snippets/info.test.yml +++ b/doc/6/controllers/server/info/snippets/info.test.yml @@ -4,6 +4,6 @@ hooks: before: after: template: default -expected: "^Kuzzle Server information: {\"serverInfo\":{\"kuzzle\":{\"version\":\"[0-9]\\.[0-9]\\.[0-9]\",\"api\":{.*" +expected: "^Kuzzle Server information: {\"serverInfo\":{\"kuzzle\":{\"version\":\"[0-9]+\\.[0-9]+\\.[0-9]+\",\"api\":{.*" sdk: js version: 6 diff --git a/package-lock.json b/package-lock.json index 31e694a04..9ab7562bb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1108,7 +1108,8 @@ "acorn-jsx": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.2.tgz", - "integrity": "sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw==" + "integrity": "sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw==", + "dev": true }, "agent-base": { "version": "4.3.0", @@ -1205,6 +1206,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -1321,7 +1323,8 @@ "astral-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true }, "async-each": { "version": "1.0.3", @@ -1745,7 +1748,8 @@ "chardet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true }, "chokidar": { "version": "2.1.8", @@ -1849,7 +1853,8 @@ "cli-width": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true }, "cliui": { "version": "4.1.0", @@ -2104,6 +2109,7 @@ "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -2223,7 +2229,8 @@ "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=" + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true }, "default-require-extensions": { "version": "2.0.0", @@ -2392,7 +2399,8 @@ "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true }, "emojis-list": { "version": "2.1.0", @@ -2530,6 +2538,7 @@ "version": "5.16.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", + "dev": true, "requires": { "@babel/code-frame": "^7.0.0", "ajv": "^6.9.1", @@ -2573,6 +2582,7 @@ "version": "6.10.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", @@ -2583,12 +2593,14 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -2597,6 +2609,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -2607,6 +2620,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, "requires": { "esutils": "^2.0.2" } @@ -2614,12 +2628,14 @@ "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true }, "file-entry-cache": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, "requires": { "flat-cache": "^2.0.1" } @@ -2628,6 +2644,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, "requires": { "flatted": "^2.0.0", "rimraf": "2.6.3", @@ -2637,12 +2654,14 @@ "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, "requires": { "glob": "^7.1.3" } @@ -2651,6 +2670,7 @@ "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" } @@ -2659,6 +2679,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -2667,6 +2688,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, "requires": { "mkdirp": "^0.5.1" } @@ -2743,6 +2765,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-2.2.1.tgz", "integrity": "sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg==", + "dev": true, "requires": { "loader-fs-cache": "^1.0.0", "loader-utils": "^1.0.2", @@ -2764,6 +2787,7 @@ "version": "1.4.2", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz", "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==", + "dev": true, "requires": { "eslint-visitor-keys": "^1.0.0" } @@ -2771,12 +2795,14 @@ "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==" + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "dev": true }, "espree": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "dev": true, "requires": { "acorn": "^6.0.7", "acorn-jsx": "^5.0.0", @@ -2786,19 +2812,22 @@ "acorn": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz", - "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==" + "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==", + "dev": true } } }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true }, "esquery": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "dev": true, "requires": { "estraverse": "^4.0.0" } @@ -2924,6 +2953,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, "requires": { "chardet": "^0.7.0", "iconv-lite": "^0.4.24", @@ -3009,7 +3039,8 @@ "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true }, "figgy-pudding": { "version": "3.5.1", @@ -3020,6 +3051,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, "requires": { "escape-string-regexp": "^1.0.5" } @@ -3115,7 +3147,8 @@ "flatted": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", - "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==" + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", + "dev": true }, "flush-write-stream": { "version": "1.1.1", @@ -3656,7 +3689,8 @@ "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=" + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true }, "get-caller-file": { "version": "1.0.3", @@ -3910,6 +3944,7 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" } @@ -3927,7 +3962,8 @@ "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true }, "ignore-walk": { "version": "3.0.1", @@ -3942,6 +3978,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz", "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==", + "dev": true, "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -3950,7 +3987,8 @@ "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true } } }, @@ -3988,6 +4026,7 @@ "version": "6.5.2", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "dev": true, "requires": { "ansi-escapes": "^3.2.0", "chalk": "^2.4.2", @@ -4007,17 +4046,20 @@ "ansi-escapes": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true }, "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -4026,6 +4068,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -4036,6 +4079,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, "requires": { "ansi-regex": "^4.1.0" } @@ -4044,6 +4088,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -4161,7 +4206,8 @@ "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=" + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true }, "is-generator": { "version": "1.0.3", @@ -4236,7 +4282,8 @@ "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true }, "is-regex": { "version": "1.0.4", @@ -4286,7 +4333,8 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "isobject": { "version": "3.0.1", @@ -4406,6 +4454,7 @@ "version": "3.13.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -4430,7 +4479,8 @@ "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=" + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true }, "json5": { "version": "2.1.0", @@ -4480,6 +4530,7 @@ "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" @@ -4509,6 +4560,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.2.tgz", "integrity": "sha512-70IzT/0/L+M20jUlEqZhZyArTU6VKLRTYRDAYN26g4jfzpJqjipLL3/hgYpySqI9PwsVRHHFja0LfEmsx9X2Cw==", + "dev": true, "requires": { "find-cache-dir": "^0.1.1", "mkdirp": "0.5.1" @@ -4518,6 +4570,7 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "dev": true, "requires": { "commondir": "^1.0.1", "mkdirp": "^0.5.1", @@ -4528,6 +4581,7 @@ "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.0.0", "pinkie-promise": "^2.0.0" @@ -4537,6 +4591,7 @@ "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.0" } @@ -4545,6 +4600,7 @@ "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.0.0" } @@ -4974,7 +5030,8 @@ "mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true }, "mz": { "version": "2.7.0", @@ -5014,7 +5071,8 @@ "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true }, "neo-async": { "version": "2.6.1", @@ -5036,7 +5094,8 @@ "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true }, "nise": { "version": "1.5.2", @@ -5271,7 +5330,8 @@ "object-hash": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", - "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==" + "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==", + "dev": true }, "object-keys": { "version": "1.1.1", @@ -5353,6 +5413,7 @@ "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.4", @@ -5441,7 +5502,8 @@ "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=" + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true }, "p-defer": { "version": "1.0.0", @@ -5530,6 +5592,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, "requires": { "callsites": "^3.0.0" }, @@ -5537,7 +5600,8 @@ "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true } } }, @@ -5592,12 +5656,14 @@ "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=" + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true }, "path-parse": { "version": "1.0.6", @@ -5658,12 +5724,14 @@ "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true }, "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.0" } @@ -5690,7 +5758,8 @@ "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true }, "private": { "version": "0.1.8", @@ -5710,7 +5779,8 @@ "progress": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.1.tgz", - "integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==" + "integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==", + "dev": true }, "promise-inflight": { "version": "1.0.1", @@ -5914,7 +5984,8 @@ "regexpp": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==" + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true }, "regexpu-core": { "version": "4.5.5", @@ -6290,6 +6361,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, "requires": { "is-promise": "^2.1.0" } @@ -6321,6 +6393,7 @@ "version": "6.5.3", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "dev": true, "requires": { "tslib": "^1.9.0" } @@ -6341,7 +6414,8 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "schema-utils": { "version": "1.0.0", @@ -6448,6 +6522,7 @@ "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" } @@ -6455,7 +6530,8 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true }, "should": { "version": "13.2.3", @@ -6767,7 +6843,8 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true }, "ssri": { "version": "6.0.1", @@ -6891,6 +6968,7 @@ "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" @@ -6899,12 +6977,14 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, "strip-ansi": { "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" } @@ -6943,7 +7023,8 @@ "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=" + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true }, "supports-color": { "version": "2.0.0", @@ -6955,6 +7036,7 @@ "version": "5.4.6", "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, "requires": { "ajv": "^6.10.2", "lodash": "^4.17.14", @@ -6966,6 +7048,7 @@ "version": "6.10.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", @@ -6976,12 +7059,14 @@ "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -6989,17 +7074,20 @@ "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "slice-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, "requires": { "ansi-styles": "^3.2.0", "astral-regex": "^1.0.0", @@ -7010,6 +7098,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, "requires": { "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", @@ -7020,6 +7109,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, "requires": { "ansi-regex": "^4.1.0" } @@ -7102,7 +7192,8 @@ "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true }, "thenify": { "version": "3.3.0", @@ -7125,7 +7216,8 @@ "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true }, "through2": { "version": "2.0.5", @@ -7158,6 +7250,7 @@ "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, "requires": { "os-tmpdir": "~1.0.2" } @@ -7229,6 +7322,7 @@ "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" } @@ -7561,6 +7655,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, "requires": { "isexe": "^2.0.0" } @@ -7583,7 +7678,8 @@ "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true }, "worker-farm": { "version": "1.7.0", diff --git a/package.json b/package.json index 4996682e3..a59a7e716 100644 --- a/package.json +++ b/package.json @@ -43,8 +43,6 @@ "@babel/preset-env": "^7.6.0", "audit": "0.0.6", "babel-loader": "^8.0.6", - "eslint": "^5.16.0", - "eslint-loader": "^2.2.1", "min-req-promise": "^1.0.1", "ora": "^3.4.0", "webpack": "^4.39.3", @@ -53,7 +51,9 @@ "devDependencies": { "codecov": "^3.5.0", "cucumber": "^5.1.0", + "eslint": "^5.16.0", "eslint-friendly-formatter": "^4.0.1", + "eslint-loader": "^2.2.1", "mocha": "6.2.0", "mock-require": "^3.0.3", "nyc": "^14.1.1",