diff --git a/commands/consumer_groups_destroy.js b/commands/consumer_groups_destroy.js index 4fb1522..8aeb610 100644 --- a/commands/consumer_groups_destroy.js +++ b/commands/consumer_groups_destroy.js @@ -10,7 +10,7 @@ const VERSION = 'v0' function * destroyConsumerGroup (context, heroku) { yield withCluster(heroku, context.app, context.args.CLUSTER, function * (addon) { yield cli.confirmApp(context.app, context.flags.confirm, - `This command will affect the cluster: ${addon.name}, which is on ${context.app}`) + `This command will affect the cluster: ${addon.name}, which is on ${context.app}`) yield cli.action(`Deleting consumer group ${context.args.CONSUMER_GROUP}`, co(function * () { return yield request(heroku, { diff --git a/commands/fail.js b/commands/fail.js index cfcbe7b..3e76e0b 100644 --- a/commands/fail.js +++ b/commands/fail.js @@ -10,7 +10,7 @@ const VERSION = 'v0' function * fail (context, heroku) { yield withCluster(heroku, context.app, context.args.CLUSTER, function * (addon) { yield cli.confirmApp(context.app, context.flags.confirm, - `This command will affect the cluster: ${addon.name}, which is on ${context.app}\n\nThis command will forcibly terminate nodes in your cluster at random.\nYou should only run this command in controlled testing scenarios.`) + `This command will affect the cluster: ${addon.name}, which is on ${context.app}\n\nThis command will forcibly terminate nodes in your cluster at random.\nYou should only run this command in controlled testing scenarios.`) let response = yield cli.action('Triggering failure', co(function * () { return yield request(heroku, { @@ -51,7 +51,7 @@ module.exports = { hasValue: false }, { name: 'zookeeper', description: 'induce failure on one of the cluster\'s Zookeeper nodes instead', - hasValue: false }, + hasValue: false }, { name: 'confirm', description: 'pass the app name to skip the manual confirmation prompt', hasValue: true, diff --git a/commands/topics.js b/commands/topics.js index a112c1f..cd6a4d5 100644 --- a/commands/topics.js +++ b/commands/topics.js @@ -75,6 +75,6 @@ let cmd = { module.exports = { cmd, deprecated: Object.assign({}, cmd, { command: 'list', - hidden: true, - run: cli.command(co.wrap(deprecated(listTopics, cmd.command))) }) + hidden: true, + run: cli.command(co.wrap(deprecated(listTopics, cmd.command))) }) } diff --git a/commands/topics_create.js b/commands/topics_create.js index e44c10c..9640806 100644 --- a/commands/topics_create.js +++ b/commands/topics_create.js @@ -87,6 +87,6 @@ let cmd = { module.exports = { cmd, deprecated: Object.assign({}, cmd, { command: 'create', - hidden: true, - run: cli.command(co.wrap(deprecated(createTopic, cmd.command))) }) + hidden: true, + run: cli.command(co.wrap(deprecated(createTopic, cmd.command))) }) } diff --git a/commands/topics_destroy.js b/commands/topics_destroy.js index e846894..dd5e788 100644 --- a/commands/topics_destroy.js +++ b/commands/topics_destroy.js @@ -11,7 +11,7 @@ const VERSION = 'v0' function * destroyTopic (context, heroku) { yield withCluster(heroku, context.app, context.args.CLUSTER, function * (addon) { yield cli.confirmApp(context.app, context.flags.confirm, - `This command will affect the cluster: ${addon.name}, which is on ${context.app}`) + `This command will affect the cluster: ${addon.name}, which is on ${context.app}`) yield cli.action(`Deleting topic ${context.args.TOPIC}`, co(function * () { const topicName = context.args.TOPIC @@ -59,6 +59,6 @@ let cmd = { module.exports = { cmd, deprecated: Object.assign({}, cmd, { command: 'delete', - hidden: true, - run: cli.command(co.wrap(deprecated(destroyTopic, cmd.command))) }) + hidden: true, + run: cli.command(co.wrap(deprecated(destroyTopic, cmd.command))) }) } diff --git a/commands/topics_info.js b/commands/topics_info.js index af9488d..19add22 100644 --- a/commands/topics_info.js +++ b/commands/topics_info.js @@ -100,6 +100,6 @@ let cmd = { module.exports = { cmd, deprecated: Object.assign({}, cmd, { command: 'topic', - hidden: true, - run: cli.command(co.wrap(deprecated(kafkaTopic, cmd.command))) }) + hidden: true, + run: cli.command(co.wrap(deprecated(kafkaTopic, cmd.command))) }) } diff --git a/commands/topics_tail.js b/commands/topics_tail.js index 2a422e1..9fd91e9 100644 --- a/commands/topics_tail.js +++ b/commands/topics_tail.js @@ -96,8 +96,8 @@ let cmd = { module.exports = { cmd, deprecated: Object.assign({}, cmd, { command: 'tail', - hidden: true, - run: cli.command(co.wrap(deprecated(tail, cmd.command))) }), + hidden: true, + run: cli.command(co.wrap(deprecated(tail, cmd.command))) }), // N.B.: exporting this here and relying on the exported version lets // us mock it out in tests process diff --git a/commands/topics_write.js b/commands/topics_write.js index be5dbbe..6581421 100644 --- a/commands/topics_write.js +++ b/commands/topics_write.js @@ -101,6 +101,6 @@ let cmd = { module.exports = { cmd, deprecated: Object.assign({}, cmd, { command: 'write', - hidden: true, - run: cli.command(co.wrap(deprecated(write, cmd.command))) }) + hidden: true, + run: cli.command(co.wrap(deprecated(write, cmd.command))) }) } diff --git a/commands/upgrade.js b/commands/upgrade.js index d5fa1a0..d9b4b2c 100644 --- a/commands/upgrade.js +++ b/commands/upgrade.js @@ -10,7 +10,7 @@ const VERSION = 'v0' function * upgradeCluster (context, heroku) { yield withCluster(heroku, context.app, context.args.CLUSTER, function * (addon) { yield cli.confirmApp(context.app, context.flags.confirm, - `This command will upgrade the brokers of the cluster to version ${context.flags.version}. + `This command will upgrade the brokers of the cluster to version ${context.flags.version}. Upgrading the cluster involves rolling restarts of brokers, and takes some time, depending on the size of the cluster.`) diff --git a/package.json b/package.json index 77f160d..266241d 100644 --- a/package.json +++ b/package.json @@ -21,14 +21,17 @@ "chai": "^3.5.0", "chai-as-promised": "^5.3.0", "coveralls": "^2.11.12", - "eslint": "^2.1.0", - "eslint-config-standard": "^6.0.0", + "eslint": "^4.1.1", + "eslint-config-standard": "^10.2.1", + "eslint-plugin-import": "^2.7.0", + "eslint-plugin-node": "^5.1.0", + "eslint-plugin-promise": "^3.5.0", + "eslint-plugin-standard": "^3.0.1", "mocha": "^3.0.2", "nock": "^8.0.0", "np": "2.15.0", "nyc": "^8.1.0", - "proxyquire": "^1.7.10", - "standard": "8.0.0" + "proxyquire": "^1.7.10" }, "files": [ "commands", @@ -45,6 +48,6 @@ "qtest": "mocha", "release": "np", "standardize": "standard --fix", - "test": "standard && nyc mocha" + "test": "eslint commands lib test && nyc mocha" } } diff --git a/test/commands/consumer_groups_create_test.js b/test/commands/consumer_groups_create_test.js index 37bda3d..b16588d 100644 --- a/test/commands/consumer_groups_create_test.js +++ b/test/commands/consumer_groups_create_test.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint standard/no-callback-literal: off, no-unused-expressions: off */ const expect = require('chai').expect const mocha = require('mocha') @@ -51,7 +52,7 @@ describe('kafka:consumer-groups:create', () => { ).reply(200) return cmd.run({app: 'myapp', - args: { CONSUMER_GROUP: 'consumer-group-1' }}) + args: { CONSUMER_GROUP: 'consumer-group-1' }}) .then(() => { expect(cli.stdout).to.equal('Use `heroku kafka:consumer-groups` to list your consumer groups.\n') }) @@ -67,7 +68,7 @@ describe('kafka:consumer-groups:create', () => { ).reply(400, {message: 'this command is not required or enabled on dedicated clusters'}) return cmd.run({app: 'myapp', - args: { CONSUMER_GROUP: 'consumer-group-1' }}) + args: { CONSUMER_GROUP: 'consumer-group-1' }}) .then(() => { expect(cli.stderr).to.equal(`Creating consumer group consumer-group-1... !\n ▸ kafka-1 does not need consumer groups managed explicitly, so this command\n ▸ does nothing\n`) }) diff --git a/test/commands/consumer_groups_destroy_test.js b/test/commands/consumer_groups_destroy_test.js index b16ee46..34a95c2 100644 --- a/test/commands/consumer_groups_destroy_test.js +++ b/test/commands/consumer_groups_destroy_test.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint standard/no-callback-literal: off, no-unused-expressions: off */ const expect = require('chai').expect const mocha = require('mocha') @@ -66,8 +67,8 @@ describe('kafka:consumer-groups:destroy', () => { ).reply(200) return cmd.run({app: 'myapp', - args: { CONSUMER_GROUP: 'consumer-group-1' }, - flags: { confirm: 'myapp' }}) + args: { CONSUMER_GROUP: 'consumer-group-1' }, + flags: { confirm: 'myapp' }}) .then(() => { expect(cli.stdout).to.equal('Your consumer group has been deleted\n') }) @@ -89,12 +90,12 @@ describe('kafka:consumer-groups:destroy', () => { lastMsg = null return cmd.run({app: 'myapp', - args: { CONSUMER_GROUP: 'consumer-group-1' }, - flags: { confirm: 'myapp' }}) - .then(() => { - expect(lastApp).to.equal('myapp') - expect(lastConfirm).to.equal('myapp') - expect(lastMsg).to.equal(message) - }) + args: { CONSUMER_GROUP: 'consumer-group-1' }, + flags: { confirm: 'myapp' }}) + .then(() => { + expect(lastApp).to.equal('myapp') + expect(lastConfirm).to.equal('myapp') + expect(lastMsg).to.equal(message) + }) }) }) diff --git a/test/commands/consumer_groups_test.js b/test/commands/consumer_groups_test.js index 7a8a1b0..23200d6 100644 --- a/test/commands/consumer_groups_test.js +++ b/test/commands/consumer_groups_test.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint standard/no-callback-literal: off, no-unused-expressions: off */ const expect = require('chai').expect const mocha = require('mocha') diff --git a/test/commands/credentials_rotate_test.js b/test/commands/credentials_rotate_test.js index fe51ac4..4fbd662 100644 --- a/test/commands/credentials_rotate_test.js +++ b/test/commands/credentials_rotate_test.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint standard/no-callback-literal: off, no-unused-expressions: off */ const expect = require('chai').expect const mocha = require('mocha') diff --git a/test/commands/fail_test.js b/test/commands/fail_test.js index 884dd74..612877c 100644 --- a/test/commands/fail_test.js +++ b/test/commands/fail_test.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint standard/no-callback-literal: off, no-unused-expressions: off */ const expect = require('chai').expect const mocha = require('mocha') @@ -59,55 +60,55 @@ describe('kafka:fail', () => { kafka.post(failUrl('00000000-0000-0000-0000-000000000000')).reply(200, { message: 'Triggered failure on node 1.2.3.4' }) return cmd.run({app: 'myapp', args: {}, flags: {confirm: 'myapp'}}) - .then(() => { - expect(lastApp).to.equal('myapp') - expect(lastConfirm).to.equal('myapp') - expect(lastMsg).to.equal(message) - }) + .then(() => { + expect(lastApp).to.equal('myapp') + expect(lastConfirm).to.equal('myapp') + expect(lastMsg).to.equal(message) + }) }) it('triggers failure', () => { kafka.post(failUrl('00000000-0000-0000-0000-000000000000', {confirm: 'myapp', - catastrophic: false, - zookeeper: false})) - .reply(200, { message: 'Triggered failure on node 1.2.3.4' }) + catastrophic: false, + zookeeper: false})) + .reply(200, { message: 'Triggered failure on node 1.2.3.4' }) return cmd.run({app: 'myapp', - args: {}, - flags: {confirm: 'myapp', - catastrophic: false, - zookeeper: false}}) - .then(() => expect(cli.stderr).to.equal('Triggering failure... done\n')) - .then(() => expect(cli.stdout).to.equal('Triggered failure on node 1.2.3.4\n')) + args: {}, + flags: {confirm: 'myapp', + catastrophic: false, + zookeeper: false}}) + .then(() => expect(cli.stderr).to.equal('Triggering failure... done\n')) + .then(() => expect(cli.stdout).to.equal('Triggered failure on node 1.2.3.4\n')) }) it('passes the --catastrophic flag', () => { kafka.post(failUrl('00000000-0000-0000-0000-000000000000', {confirm: 'myapp', - catastrophic: true, - zookeeper: false})) - .reply(200, { message: 'Triggered failure on node 1.2.3.4' }) + catastrophic: true, + zookeeper: false})) + .reply(200, { message: 'Triggered failure on node 1.2.3.4' }) return cmd.run({app: 'myapp', - args: {}, - flags: {confirm: 'myapp', - catastrophic: true, - zookeeper: false}}) - .then(() => expect(cli.stderr).to.equal('Triggering failure... done\n')) - .then(() => expect(cli.stdout).to.equal('Triggered failure on node 1.2.3.4\n')) + args: {}, + flags: {confirm: 'myapp', + catastrophic: true, + zookeeper: false}}) + .then(() => expect(cli.stderr).to.equal('Triggering failure... done\n')) + .then(() => expect(cli.stdout).to.equal('Triggered failure on node 1.2.3.4\n')) }) it('passes the --zookeeper flag', () => { kafka.post(failUrl('00000000-0000-0000-0000-000000000000', {confirm: 'myapp', - catastrophic: false, - zookeeper: true})) - .reply(200, { message: 'Triggered failure on node 1.2.3.4' }) + catastrophic: false, + zookeeper: true})) + .reply(200, { message: 'Triggered failure on node 1.2.3.4' }) return cmd.run({app: 'myapp', - args: {}, - flags: {confirm: 'myapp', - catastrophic: false, - zookeeper: true}}) - .then(() => expect(cli.stderr).to.equal('Triggering failure... done\n')) - .then(() => expect(cli.stdout).to.equal('Triggered failure on node 1.2.3.4\n')) + args: {}, + flags: {confirm: 'myapp', + catastrophic: false, + zookeeper: true}}) + .then(() => expect(cli.stderr).to.equal('Triggering failure... done\n')) + .then(() => expect(cli.stdout).to.equal('Triggered failure on node 1.2.3.4\n')) }) }) diff --git a/test/commands/host_test.js b/test/commands/host_test.js index c67d9dd..c152a92 100644 --- a/test/commands/host_test.js +++ b/test/commands/host_test.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint standard/no-callback-literal: off, no-unused-expressions: off */ const expect = require('chai').expect const mocha = require('mocha') diff --git a/test/commands/info_test.js b/test/commands/info_test.js index ae4f1cf..0cb759c 100644 --- a/test/commands/info_test.js +++ b/test/commands/info_test.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint standard/no-callback-literal: off, no-unused-expressions: off */ const expect = require('chai').expect const mocha = require('mocha') diff --git a/test/commands/topics_compaction_test.js b/test/commands/topics_compaction_test.js index 2ba5a98..089bcb2 100644 --- a/test/commands/topics_compaction_test.js +++ b/test/commands/topics_compaction_test.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint standard/no-callback-literal: off, no-unused-expressions: off */ const expect = require('chai').expect const mocha = require('mocha') @@ -51,7 +52,7 @@ describe('kafka:topics:compaction', () => { describe('with unknown value specified', () => { it('shows an error and exits', () => { return expectExit(1, cmd.run({app: 'myapp', - args: { TOPIC: 'topic-1', VALUE: 'yep' }})) + args: { TOPIC: 'topic-1', VALUE: 'yep' }})) .then(() => expect(cli.stdout).to.be.empty) .then(() => expect(cli.stderr).to.equal(` ▸ Unknown value 'yep': must be 'on' or 'enable' to enable, or 'off' or ▸ 'disable' to disable @@ -65,49 +66,49 @@ describe('kafka:topics:compaction', () => { describe('if the cluster supports a mixed cleanup policy', () => { beforeEach(() => { kafka.get(infoUrl('00000000-0000-0000-0000-000000000000')) - .reply(200, { - capabilities: { supports_mixed_cleanup_policy: true }, - limits: { minimum_retention_ms: 20 } - }) + .reply(200, { + capabilities: { supports_mixed_cleanup_policy: true }, + limits: { minimum_retention_ms: 20 } + }) }) validEnable.forEach((value) => { it(`uses the original retention and turns compaction on with argument ${value}`, () => { kafka.get(topicListUrl('00000000-0000-0000-0000-000000000000')) - .reply(200, { topics: [ { name: 'topic-1', retention_time_ms: 123 } ] }) + .reply(200, { topics: [ { name: 'topic-1', retention_time_ms: 123 } ] }) kafka.put(topicConfigUrl('00000000-0000-0000-0000-000000000000', 'topic-1'), - { topic: { name: 'topic-1', compaction: true, retention_time_ms: 123 } }) - .reply(200) + { topic: { name: 'topic-1', compaction: true, retention_time_ms: 123 } }) + .reply(200) return cmd.run({app: 'myapp', args: { TOPIC: 'topic-1', VALUE: value }}) - .then(() => expect(cli.stderr).to.equal('Enabling compaction for topic topic-1 on kafka-1... done\n')) - .then(() => expect(cli.stdout).to.equal('Use `heroku kafka:topics:info topic-1` to monitor your topic.\n')) + .then(() => expect(cli.stderr).to.equal('Enabling compaction for topic topic-1 on kafka-1... done\n')) + .then(() => expect(cli.stdout).to.equal('Use `heroku kafka:topics:info topic-1` to monitor your topic.\n')) }) }) validDisable.forEach((value) => { it(`turns compaction off and uses current retention value if set with argument ${value}`, () => { kafka.get(topicListUrl('00000000-0000-0000-0000-000000000000')) - .reply(200, { topics: [ { name: 'topic-1', retention_time_ms: 123, compaction: true } ] }) + .reply(200, { topics: [ { name: 'topic-1', retention_time_ms: 123, compaction: true } ] }) kafka.put(topicConfigUrl('00000000-0000-0000-0000-000000000000', 'topic-1'), - { topic: { name: 'topic-1', compaction: false, retention_time_ms: 123 } }) - .reply(200) + { topic: { name: 'topic-1', compaction: false, retention_time_ms: 123 } }) + .reply(200) return cmd.run({app: 'myapp', args: { TOPIC: 'topic-1', VALUE: value }}) - .then(() => expect(cli.stderr).to.equal('Disabling compaction for topic topic-1 on kafka-1... done\n')) - .then(() => expect(cli.stdout).to.equal('Use `heroku kafka:topics:info topic-1` to monitor your topic.\n')) + .then(() => expect(cli.stderr).to.equal('Disabling compaction for topic topic-1 on kafka-1... done\n')) + .then(() => expect(cli.stdout).to.equal('Use `heroku kafka:topics:info topic-1` to monitor your topic.\n')) }) it(`turns compaction off and sets retention to plan minimum if unset with argument ${value}`, () => { kafka.get(topicListUrl('00000000-0000-0000-0000-000000000000')) - .reply(200, { topics: [ { name: 'topic-1', compaction: true } ] }) + .reply(200, { topics: [ { name: 'topic-1', compaction: true } ] }) kafka.put(topicConfigUrl('00000000-0000-0000-0000-000000000000', 'topic-1'), - { topic: { name: 'topic-1', compaction: false, retention_time_ms: 20 } }) - .reply(200) + { topic: { name: 'topic-1', compaction: false, retention_time_ms: 20 } }) + .reply(200) return cmd.run({app: 'myapp', args: { TOPIC: 'topic-1', VALUE: value }}) - .then(() => expect(cli.stderr).to.equal('Disabling compaction and setting retention time to 20 milliseconds for topic topic-1 on kafka-1... done\n')) - .then(() => expect(cli.stdout).to.equal('Use `heroku kafka:topics:info topic-1` to monitor your topic.\n')) + .then(() => expect(cli.stderr).to.equal('Disabling compaction and setting retention time to 20 milliseconds for topic topic-1 on kafka-1... done\n')) + .then(() => expect(cli.stdout).to.equal('Use `heroku kafka:topics:info topic-1` to monitor your topic.\n')) }) }) }) @@ -115,35 +116,35 @@ describe('kafka:topics:compaction', () => { describe('if the cluster does not support a mixed cleanup policy', () => { beforeEach(() => { kafka.get(topicListUrl('00000000-0000-0000-0000-000000000000')) - .reply(200, { topics: [ { name: 'topic-1', compaction: true } ] }) + .reply(200, { topics: [ { name: 'topic-1', compaction: true } ] }) kafka.get(infoUrl('00000000-0000-0000-0000-000000000000')) - .reply(200, { - capabilities: { supports_mixed_cleanup_policy: false }, - limits: { minimum_retention_ms: 20 } - }) + .reply(200, { + capabilities: { supports_mixed_cleanup_policy: false }, + limits: { minimum_retention_ms: 20 } + }) }) validEnable.forEach((value) => { it(`turns off retention and turns compaction on with argument ${value}`, () => { kafka.put(topicConfigUrl('00000000-0000-0000-0000-000000000000', 'topic-1'), - { topic: { name: 'topic-1', compaction: true, retention_time_ms: null } }) - .reply(200) + { topic: { name: 'topic-1', compaction: true, retention_time_ms: null } }) + .reply(200) return cmd.run({app: 'myapp', args: { TOPIC: 'topic-1', VALUE: value }}) - .then(() => expect(cli.stderr).to.equal('Enabling compaction and disabling time-based retention for topic topic-1 on kafka-1... done\n')) - .then(() => expect(cli.stdout).to.equal('Use `heroku kafka:topics:info topic-1` to monitor your topic.\n')) + .then(() => expect(cli.stderr).to.equal('Enabling compaction and disabling time-based retention for topic topic-1 on kafka-1... done\n')) + .then(() => expect(cli.stdout).to.equal('Use `heroku kafka:topics:info topic-1` to monitor your topic.\n')) }) }) validDisable.forEach((value) => { it(`turns compaction off and sets retention to plan minimum with argument ${value}`, () => { kafka.put(topicConfigUrl('00000000-0000-0000-0000-000000000000', 'topic-1'), - { topic: { name: 'topic-1', compaction: false, retention_time_ms: 20 } }) - .reply(200) + { topic: { name: 'topic-1', compaction: false, retention_time_ms: 20 } }) + .reply(200) return cmd.run({app: 'myapp', args: { TOPIC: 'topic-1', VALUE: value }}) - .then(() => expect(cli.stderr).to.equal('Disabling compaction and setting retention time to 20 milliseconds for topic topic-1 on kafka-1... done\n')) - .then(() => expect(cli.stdout).to.equal('Use `heroku kafka:topics:info topic-1` to monitor your topic.\n')) + .then(() => expect(cli.stderr).to.equal('Disabling compaction and setting retention time to 20 milliseconds for topic topic-1 on kafka-1... done\n')) + .then(() => expect(cli.stdout).to.equal('Use `heroku kafka:topics:info topic-1` to monitor your topic.\n')) }) }) }) diff --git a/test/commands/topics_create_test.js b/test/commands/topics_create_test.js index 1d0242c..8325549 100644 --- a/test/commands/topics_create_test.js +++ b/test/commands/topics_create_test.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint standard/no-callback-literal: off, no-unused-expressions: off */ const expect = require('chai').expect const mocha = require('mocha') @@ -47,15 +48,15 @@ describe('kafka:topics:create', () => { it('shows an error and exits with an invalid retention time', () => { return expectExit(1, cmd.run({app: 'myapp', - args: { TOPIC: 'topic-1' }, - flags: { 'retention-time': '2 eons' }})) + args: { TOPIC: 'topic-1' }, + flags: { 'retention-time': '2 eons' }})) .then(() => expect(cli.stdout).to.be.empty) .then(() => expect(cli.stderr).to.equal(` ▸ Could not parse retention time '2 eons'; expected value like '10d' or\n ▸ '36h'\n`)) }) it('passes the topic name and specified flags', () => { kafka.get(infoUrl('00000000-0000-0000-0000-000000000000')) - .reply(200, { shared_cluster: false }) + .reply(200, { shared_cluster: false }) kafka.post(createUrl('00000000-0000-0000-0000-000000000000'), { topic: { @@ -68,19 +69,20 @@ describe('kafka:topics:create', () => { }).reply(200) return cmd.run({app: 'myapp', - args: { TOPIC: 'topic-1' }, - flags: { 'replication-factor': '3', - 'retention-time': '10ms', - 'partitions': '7' }}) - .then(() => { - expect(cli.stderr).to.equal('Creating topic topic-1 with compaction disabled and retention time 10 milliseconds on kafka-1... done\n') - expect(cli.stdout).to.equal('Use `heroku kafka:topics:info topic-1` to monitor your topic.\n') - }) + args: { TOPIC: 'topic-1' }, + flags: { 'replication-factor': '3', + 'retention-time': '10ms', + 'partitions': '7' }} + ) + .then(() => { + expect(cli.stderr).to.equal('Creating topic topic-1 with compaction disabled and retention time 10 milliseconds on kafka-1... done\n') + expect(cli.stdout).to.equal('Use `heroku kafka:topics:info topic-1` to monitor your topic.\n') + }) }) it('defaults retention to the plan minimum if not specified even if retention specified', () => { kafka.get(infoUrl('00000000-0000-0000-0000-000000000000')) - .reply(200, { shared_cluster: false, limits: { minimum_retention_ms: 66 } }) + .reply(200, { shared_cluster: false, limits: { minimum_retention_ms: 66 } }) kafka.post(createUrl('00000000-0000-0000-0000-000000000000'), { topic: { @@ -93,19 +95,20 @@ describe('kafka:topics:create', () => { }).reply(200) return cmd.run({app: 'myapp', - args: { TOPIC: 'topic-1' }, - flags: { 'replication-factor': '3', - 'partitions': '7' }}) - .then(() => { - expect(cli.stderr).to.equal('Creating topic topic-1 with compaction disabled and retention time 66 milliseconds on kafka-1... done\n') - expect(cli.stdout).to.equal('Use `heroku kafka:topics:info topic-1` to monitor your topic.\n') - }) + args: { TOPIC: 'topic-1' }, + flags: { 'replication-factor': '3', + 'partitions': '7' }} + ) + .then(() => { + expect(cli.stderr).to.equal('Creating topic topic-1 with compaction disabled and retention time 66 milliseconds on kafka-1... done\n') + expect(cli.stdout).to.equal('Use `heroku kafka:topics:info topic-1` to monitor your topic.\n') + }) }) describe('for multi-tenant plans', () => { it('defaults retention to the plan minimum if not specified even if compaction specified', () => { kafka.get(infoUrl('00000000-0000-0000-0000-000000000000')) - .reply(200, { shared_cluster: true, limits: { minimum_retention_ms: 66 } }) + .reply(200, { shared_cluster: true, limits: { minimum_retention_ms: 66 } }) kafka.post(createUrl('00000000-0000-0000-0000-000000000000'), { topic: { @@ -118,14 +121,15 @@ describe('kafka:topics:create', () => { }).reply(200) return cmd.run({app: 'myapp', - args: { TOPIC: 'topic-1' }, - flags: { 'replication-factor': '3', - 'partitions': '7', - 'compaction': true }}) - .then(() => { - expect(cli.stderr).to.equal('Creating topic topic-1 with compaction enabled and retention time 66 milliseconds on kafka-1... done\n') - expect(cli.stdout).to.equal('Use `heroku kafka:topics:info topic-1` to monitor your topic.\n') - }) + args: { TOPIC: 'topic-1' }, + flags: { 'replication-factor': '3', + 'partitions': '7', + 'compaction': true }} + ) + .then(() => { + expect(cli.stderr).to.equal('Creating topic topic-1 with compaction enabled and retention time 66 milliseconds on kafka-1... done\n') + expect(cli.stdout).to.equal('Use `heroku kafka:topics:info topic-1` to monitor your topic.\n') + }) }) }) }) diff --git a/test/commands/topics_destroy_test.js b/test/commands/topics_destroy_test.js index 092e445..706305a 100644 --- a/test/commands/topics_destroy_test.js +++ b/test/commands/topics_destroy_test.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint standard/no-callback-literal: off, no-unused-expressions: off */ const expect = require('chai').expect const mocha = require('mocha') @@ -64,25 +65,27 @@ describe('kafka:topics:destroy', () => { lastMsg = null return cmd.run({app: 'myapp', - args: { TOPIC: 'topic-1' }, - flags: { confirm: 'myapp' }}) - .then(() => { - expect(lastApp).to.equal('myapp') - expect(lastConfirm).to.equal('myapp') - expect(lastMsg).to.equal(message) - }) + args: { TOPIC: 'topic-1' }, + flags: { confirm: 'myapp' }} + ) + .then(() => { + expect(lastApp).to.equal('myapp') + expect(lastConfirm).to.equal('myapp') + expect(lastMsg).to.equal(message) + }) }) it('deletes the topic', () => { kafka.delete(deleteUrl('00000000-0000-0000-0000-000000000000', 'topic-1'), { topic_name: 'topic-1' }) - .reply(200) + .reply(200) return cmd.run({app: 'myapp', - args: { TOPIC: 'topic-1' }, - flags: { 'replication-factor': '3', confirm: 'myapp' }}) - .then(() => { - expect(cli.stdout).to.equal('Your topic has been marked for deletion, and will be removed from the cluster shortly\n') - expect(cli.stderr).to.equal('Deleting topic topic-1... done\n') - }) + args: { TOPIC: 'topic-1' }, + flags: { 'replication-factor': '3', confirm: 'myapp' }} + ) + .then(() => { + expect(cli.stdout).to.equal('Your topic has been marked for deletion, and will be removed from the cluster shortly\n') + expect(cli.stderr).to.equal('Deleting topic topic-1... done\n') + }) }) }) diff --git a/test/commands/topics_info_test.js b/test/commands/topics_info_test.js index dca18e2..0e50169 100644 --- a/test/commands/topics_info_test.js +++ b/test/commands/topics_info_test.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint standard/no-callback-literal: off, no-unused-expressions: off */ const expect = require('chai').expect const mocha = require('mocha') diff --git a/test/commands/topics_replication_factor_test.js b/test/commands/topics_replication_factor_test.js index 1b17ec9..5680e8b 100644 --- a/test/commands/topics_replication_factor_test.js +++ b/test/commands/topics_replication_factor_test.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint standard/no-callback-literal: off, no-unused-expressions: off */ const expect = require('chai').expect const mocha = require('mocha') @@ -45,13 +46,14 @@ describe('kafka:topics:replication-factor', () => { it('sets replication factor to the specified value', () => { kafka.get(topicListUrl('00000000-0000-0000-0000-000000000000')) - .reply(200, { topics: [ { name: 'topic-1', retention_time_ms: 123, compaction: true } ] }) + .reply(200, { topics: [ { name: 'topic-1', retention_time_ms: 123, compaction: true } ] }) kafka.put(topicConfigUrl('00000000-0000-0000-0000-000000000000', 'topic-1'), - { topic: { name: 'topic-1', replication_factor: '5', retention_time_ms: 123, compaction: true } }) - .reply(200) + { topic: { name: 'topic-1', replication_factor: '5', retention_time_ms: 123, compaction: true } } + ) + .reply(200) return cmd.run({app: 'myapp', args: { TOPIC: 'topic-1', VALUE: '5' }}) - .then(() => expect(cli.stderr).to.equal('Setting replication factor for topic topic-1 to 5... done\n')) - .then(() => expect(cli.stdout).to.equal('Use `heroku kafka:topics:info topic-1` to monitor your topic.\n')) + .then(() => expect(cli.stderr).to.equal('Setting replication factor for topic topic-1 to 5... done\n')) + .then(() => expect(cli.stdout).to.equal('Use `heroku kafka:topics:info topic-1` to monitor your topic.\n')) }) }) diff --git a/test/commands/topics_retention_time_test.js b/test/commands/topics_retention_time_test.js index 2898660..e0d80f5 100644 --- a/test/commands/topics_retention_time_test.js +++ b/test/commands/topics_retention_time_test.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint standard/no-callback-literal: off, no-unused-expressions: off */ const expect = require('chai').expect const mocha = require('mocha') @@ -51,8 +52,8 @@ describe('kafka:topics:retention-time', () => { describe('with unknown value specified', () => { it('shows an error and exits', () => { return expectExit(1, cmd.run({app: 'myapp', - args: { TOPIC: 'topic-1', VALUE: '1 fortnight' }, - flags: {}})) + args: { TOPIC: 'topic-1', VALUE: '1 fortnight' }, + flags: {}})) .then(() => expect(cli.stdout).to.be.empty) .then(() => expect(cli.stderr).to.equal(` ▸ Unknown retention time '1 fortnight'; expected 'disable' or value like ▸ '36h' or '10d' @@ -63,68 +64,72 @@ describe('kafka:topics:retention-time', () => { describe('if the cluster supports a mixed cleanup policy', () => { beforeEach(() => { kafka.get(topicListUrl('00000000-0000-0000-0000-000000000000')) - .reply(200, { topics: [ { name: 'topic-1', retention_time_ms: 123, compaction: false } ] }) + .reply(200, { topics: [ { name: 'topic-1', retention_time_ms: 123, compaction: false } ] }) kafka.get(infoUrl('00000000-0000-0000-0000-000000000000')) - .reply(200, { - capabilities: { supports_mixed_cleanup_policy: true }, - limits: { minimum_retention_ms: 20 } - }) + .reply(200, { + capabilities: { supports_mixed_cleanup_policy: true }, + limits: { minimum_retention_ms: 20 } + }) }) it('sets retention time and leaves compaction as is if a value is specified', () => { kafka.put(topicConfigUrl('00000000-0000-0000-0000-000000000000', 'topic-1'), - { topic: { name: 'topic-1', retention_time_ms: 60000, compaction: false } }).reply(200) + { topic: { name: 'topic-1', retention_time_ms: 60000, compaction: false } }).reply(200) return cmd.run({app: 'myapp', - args: { TOPIC: 'topic-1', VALUE: '60s' }, - flags: {}}) - .then(() => expect(cli.stderr).to.equal('Setting retention time to 60s for topic topic-1 on kafka-1... done\n')) - .then(() => expect(cli.stdout).to.equal('Use `heroku kafka:topics:info topic-1` to monitor your topic.\n')) + args: { TOPIC: 'topic-1', VALUE: '60s' }, + flags: {}} + ) + .then(() => expect(cli.stderr).to.equal('Setting retention time to 60s for topic topic-1 on kafka-1... done\n')) + .then(() => expect(cli.stdout).to.equal('Use `heroku kafka:topics:info topic-1` to monitor your topic.\n')) }) it('clears retention and turns on compaction if `disable` is specified', () => { kafka.put(topicConfigUrl('00000000-0000-0000-0000-000000000000', 'topic-1'), - { topic: { name: 'topic-1', retention_time_ms: null, compaction: true } }).reply(200) + { topic: { name: 'topic-1', retention_time_ms: null, compaction: true } }).reply(200) return cmd.run({app: 'myapp', - args: { TOPIC: 'topic-1', VALUE: 'disable' }, - flags: {}}) - .then(() => expect(cli.stderr).to.equal('Disabling time-based retention and enabling compaction for topic topic-1 on kafka-1... done\n')) - .then(() => expect(cli.stdout).to.equal('Use `heroku kafka:topics:info topic-1` to monitor your topic.\n')) + args: { TOPIC: 'topic-1', VALUE: 'disable' }, + flags: {}} + ) + .then(() => expect(cli.stderr).to.equal('Disabling time-based retention and enabling compaction for topic topic-1 on kafka-1... done\n')) + .then(() => expect(cli.stdout).to.equal('Use `heroku kafka:topics:info topic-1` to monitor your topic.\n')) }) }) describe('if the cluster does not support a mixed cleanup policy', () => { beforeEach(() => { kafka.get(topicListUrl('00000000-0000-0000-0000-000000000000')) - .reply(200, { topics: [ { name: 'topic-1', retention_time_ms: 123, compaction: true } ] }) + .reply(200, { topics: [ { name: 'topic-1', retention_time_ms: 123, compaction: true } ] }) kafka.get(infoUrl('00000000-0000-0000-0000-000000000000')) - .reply(200, { - capabilities: { supports_mixed_cleanup_policy: false }, - limits: { minimum_retention_ms: 20 } - }) + .reply(200, { + capabilities: { supports_mixed_cleanup_policy: false }, + limits: { minimum_retention_ms: 20 } + }) }) it('sets retention time and turns off compaction if a value is specified', () => { kafka.put(topicConfigUrl('00000000-0000-0000-0000-000000000000', 'topic-1'), - { topic: { name: 'topic-1', retention_time_ms: 60000, compaction: false } }).reply(200) + { topic: { name: 'topic-1', retention_time_ms: 60000, compaction: false } }).reply(200) return cmd.run({app: 'myapp', - args: { TOPIC: 'topic-1', VALUE: '60s' }, - flags: {}}) - .then(() => expect(cli.stderr).to.equal('Setting retention time to 60s and disabling compaction for topic topic-1 on kafka-1... done\n')) - .then(() => expect(cli.stdout).to.equal('Use `heroku kafka:topics:info topic-1` to monitor your topic.\n')) + args: { TOPIC: 'topic-1', VALUE: '60s' }, + flags: {}} + ) + .then(() => expect(cli.stderr).to.equal('Setting retention time to 60s and disabling compaction for topic topic-1 on kafka-1... done\n')) + .then(() => expect(cli.stdout).to.equal('Use `heroku kafka:topics:info topic-1` to monitor your topic.\n')) }) it('clears retention and turns on compaction if `disabled` is specified', () => { kafka.put(topicConfigUrl('00000000-0000-0000-0000-000000000000', 'topic-1'), - { topic: { name: 'topic-1', retention_time_ms: null, compaction: true } }).reply(200) + { topic: { name: 'topic-1', retention_time_ms: null, compaction: true } }).reply(200) return cmd.run({app: 'myapp', - args: { TOPIC: 'topic-1', VALUE: 'disable' }, - flags: {}}) - .then(() => expect(cli.stderr).to.equal('Disabling time-based retention for topic topic-1 on kafka-1... done\n')) - .then(() => expect(cli.stdout).to.equal('Use `heroku kafka:topics:info topic-1` to monitor your topic.\n')) + args: { TOPIC: 'topic-1', VALUE: 'disable' }, + flags: {}} + ) + .then(() => expect(cli.stderr).to.equal('Disabling time-based retention for topic topic-1 on kafka-1... done\n')) + .then(() => expect(cli.stdout).to.equal('Use `heroku kafka:topics:info topic-1` to monitor your topic.\n')) }) }) }) diff --git a/test/commands/topics_tail_test.js b/test/commands/topics_tail_test.js index 130f204..23fc075 100644 --- a/test/commands/topics_tail_test.js +++ b/test/commands/topics_tail_test.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint standard/no-callback-literal: off, no-unused-expressions: off */ const expect = require('chai').expect const mocha = require('mocha') @@ -128,10 +129,10 @@ describe('kafka:topics:tail', () => { } return cmd.run({app: 'myapp', args: { TOPIC: 'topic-1' }}) - .then(() => { - expect(cli.stdout).to.equal('topic-1 42 1 5 hello\ntopic-1 42 2 5 world\ntopic-1 42 3 0 NULL\n') - expect(cli.stderr).to.be.empty - }) + .then(() => { + expect(cli.stdout).to.equal('topic-1 42 1 5 hello\ntopic-1 42 2 5 world\ntopic-1 42 3 0 NULL\n') + expect(cli.stderr).to.be.empty + }) }) it('tails a topic with a prefix and prints the results', () => { @@ -153,10 +154,10 @@ describe('kafka:topics:tail', () => { } return cmd.run({app: 'myapp', args: { TOPIC: 'topic-1' }}) - .then(() => { - expect(cli.stdout).to.equal('topic-1 42 1 5 hello\ntopic-1 42 2 5 world\ntopic-1 42 3 0 NULL\n') - expect(cli.stderr).to.be.empty - }) + .then(() => { + expect(cli.stdout).to.equal('topic-1 42 1 5 hello\ntopic-1 42 2 5 world\ntopic-1 42 3 0 NULL\n') + expect(cli.stderr).to.be.empty + }) }) it('tails a topic with a prefixed name and prints the results', () => { @@ -178,9 +179,9 @@ describe('kafka:topics:tail', () => { } return cmd.run({app: 'myapp', args: { TOPIC: 'nile-1234.topic-1' }}) - .then(() => { - expect(cli.stdout).to.equal('nile-1234.topic-1 42 1 5 hello\nnile-1234.topic-1 42 2 5 world\nnile-1234.topic-1 42 3 0 NULL\n') - expect(cli.stderr).to.be.empty - }) + .then(() => { + expect(cli.stdout).to.equal('nile-1234.topic-1 42 1 5 hello\nnile-1234.topic-1 42 2 5 world\nnile-1234.topic-1 42 3 0 NULL\n') + expect(cli.stderr).to.be.empty + }) }) }) diff --git a/test/commands/topics_test.js b/test/commands/topics_test.js index 26df532..7d750ea 100644 --- a/test/commands/topics_test.js +++ b/test/commands/topics_test.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint standard/no-callback-literal: off, no-unused-expressions: off */ const expect = require('chai').expect const mocha = require('mocha') diff --git a/test/commands/topics_write_test.js b/test/commands/topics_write_test.js index d4b66d5..3b578ac 100644 --- a/test/commands/topics_write_test.js +++ b/test/commands/topics_write_test.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint standard/no-callback-literal: off, no-unused-expressions: off */ const expect = require('chai').expect const mocha = require('mocha') @@ -116,12 +117,13 @@ describe('kafka:topics:write', () => { } return cmd.run({app: 'myapp', - args: { TOPIC: 'topic-1', MESSAGE: 'hello world' }, - flags: {}}) - .then(() => { - expect(cli.stdout).to.be.empty - expect(cli.stderr).to.be.empty - }) + args: { TOPIC: 'topic-1', MESSAGE: 'hello world' }, + flags: {}} + ) + .then(() => { + expect(cli.stdout).to.be.empty + expect(cli.stderr).to.be.empty + }) }) it('uses a prefix if one exists', () => { @@ -140,12 +142,13 @@ describe('kafka:topics:write', () => { } return cmd.run({app: 'myapp', - args: { TOPIC: 'topic-1', MESSAGE: 'hello world' }, - flags: {}}) - .then(() => { - expect(cli.stdout).to.be.empty - expect(cli.stderr).to.be.empty - }) + args: { TOPIC: 'topic-1', MESSAGE: 'hello world' }, + flags: {}} + ) + .then(() => { + expect(cli.stdout).to.be.empty + expect(cli.stderr).to.be.empty + }) }) it('uses a prefixed topic if one is used', () => { @@ -164,12 +167,13 @@ describe('kafka:topics:write', () => { } return cmd.run({app: 'myapp', - args: { TOPIC: 'nile-1234.topic-1', MESSAGE: 'hello world' }, - flags: {}}) - .then(() => { - expect(cli.stdout).to.be.empty - expect(cli.stderr).to.be.empty - }) + args: { TOPIC: 'nile-1234.topic-1', MESSAGE: 'hello world' }, + flags: {}} + ) + .then(() => { + expect(cli.stdout).to.be.empty + expect(cli.stderr).to.be.empty + }) }) it('uses given partition if specified', () => { @@ -185,12 +189,13 @@ describe('kafka:topics:write', () => { } return cmd.run({app: 'myapp', - args: { TOPIC: 'topic-1', MESSAGE: 'hello world' }, - flags: { partition: '3' }}) - .then(() => { - expect(cli.stdout).to.be.empty - expect(cli.stderr).to.be.empty - }) + args: { TOPIC: 'topic-1', MESSAGE: 'hello world' }, + flags: { partition: '3' }} + ) + .then(() => { + expect(cli.stdout).to.be.empty + expect(cli.stderr).to.be.empty + }) }) it('uses given message key if specified', () => { @@ -206,11 +211,12 @@ describe('kafka:topics:write', () => { } return cmd.run({app: 'myapp', - args: { TOPIC: 'topic-1', MESSAGE: 'hello world' }, - flags: { 'key': '1234' }}) - .then(() => { - expect(cli.stdout).to.be.empty - expect(cli.stderr).to.be.empty - }) + args: { TOPIC: 'topic-1', MESSAGE: 'hello world' }, + flags: { 'key': '1234' }} + ) + .then(() => { + expect(cli.stdout).to.be.empty + expect(cli.stderr).to.be.empty + }) }) }) diff --git a/test/commands/upgrade_test.js b/test/commands/upgrade_test.js index b63b589..e13c8c5 100644 --- a/test/commands/upgrade_test.js +++ b/test/commands/upgrade_test.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint standard/no-callback-literal: off, no-unused-expressions: off */ const expect = require('chai').expect const mocha = require('mocha') @@ -59,24 +60,25 @@ describe('kafka:upgrade', () => { kafka.put(upgradeUrl('00000000-0000-0000-0000-000000000000')).reply(200) return cmd.run({app: 'myapp', - args: {}, - flags: {confirm: 'myapp', version: '0.10'}}) - .then(() => { - expect(lastApp).to.equal('myapp') - expect(lastConfirm).to.equal('myapp') - expect(lastMsg).to.equal(message) - }) + args: {}, + flags: {confirm: 'myapp', version: '0.10'}}) + .then(() => { + expect(lastApp).to.equal('myapp') + expect(lastConfirm).to.equal('myapp') + expect(lastMsg).to.equal(message) + }) }) it('triggers an upgrade to the desired version', () => { kafka.put(upgradeUrl('00000000-0000-0000-0000-000000000000', {confirm: 'myapp', - version: '0.10'})) - .reply(200, { message: 'Triggered failure on node 1.2.3.4' }) + version: '0.10'}) + ) + .reply(200, { message: 'Triggered failure on node 1.2.3.4' }) return cmd.run({app: 'myapp', - args: {}, - flags: {confirm: 'myapp', version: '0.10'}}) - .then(() => expect(cli.stderr).to.equal('Upgrading to version 0.10... started.\n\n\n')) - .then(() => expect(cli.stdout).to.equal('Use `heroku kafka:wait` to monitor the upgrade.\n')) + args: {}, + flags: {confirm: 'myapp', version: '0.10'}}) + .then(() => expect(cli.stderr).to.equal('Upgrading to version 0.10... started.\n\n\n')) + .then(() => expect(cli.stdout).to.equal('Use `heroku kafka:wait` to monitor the upgrade.\n')) }) }) diff --git a/test/commands/wait_test.js b/test/commands/wait_test.js index ad47b09..98cf1aa 100644 --- a/test/commands/wait_test.js +++ b/test/commands/wait_test.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint standard/no-callback-literal: off, no-unused-expressions: off */ const expect = require('chai').expect const mocha = require('mocha') diff --git a/test/commands/zookeeper_test.js b/test/commands/zookeeper_test.js index d4e6eda..c695d38 100644 --- a/test/commands/zookeeper_test.js +++ b/test/commands/zookeeper_test.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint standard/no-callback-literal: off, no-unused-expressions: off */ const expect = require('chai').expect const mocha = require('mocha') @@ -65,8 +66,8 @@ describe('kafka:zookeeper', () => { kafka.post(configUrl('00000000-0000-0000-0000-000000000000'), { enabled: true }).reply(200) return cmd.run({app: 'myapp', args: { VALUE: value }}) - .then(() => expect(cli.stderr).to.equal('Enabling Zookeeper access... done\n')) - .then(() => expect(cli.stdout).to.be.empty) + .then(() => expect(cli.stderr).to.equal('Enabling Zookeeper access... done\n')) + .then(() => expect(cli.stdout).to.be.empty) }) }) @@ -76,8 +77,8 @@ describe('kafka:zookeeper', () => { kafka.post(configUrl('00000000-0000-0000-0000-000000000000'), { enabled: false }).reply(200) return cmd.run({app: 'myapp', args: { VALUE: value }}) - .then(() => expect(cli.stderr).to.equal('Disabling Zookeeper access... done\n')) - .then(() => expect(cli.stdout).to.be.empty) + .then(() => expect(cli.stderr).to.equal('Disabling Zookeeper access... done\n')) + .then(() => expect(cli.stdout).to.be.empty) }) }) }) diff --git a/test/init.js b/test/init.js index 60d8337..4e55059 100644 --- a/test/init.js +++ b/test/init.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint no-multi-spaces: off */ const cli = require('heroku-cli-util') // Load heroku-cli-util helpers const nock = require('nock') // Load nock diff --git a/test/lib/clusters_test.js b/test/lib/clusters_test.js index 9e737be..cb174da 100644 --- a/test/lib/clusters_test.js +++ b/test/lib/clusters_test.js @@ -1,4 +1,5 @@ 'use strict' +/* eslint standard/no-callback-literal: off, no-unused-expressions: off */ const chai = require('chai') const chaiAsPromised = require('chai-as-promised') @@ -44,9 +45,11 @@ describe('withCluster', () => { it('propagates the error if the fetcher rejects the promise', () => { fetchOne = () => Promise.reject(new Error('oh snap')) let called = false - return expect(co.wrap(clusters.withCluster)(heroku, - 'my-app', 'kafka-1', - function * (arg) { called = true })) + return expect(co.wrap(clusters.withCluster)( + heroku, + 'my-app', 'kafka-1', + function * (arg) { called = true }) + ) .to.be.rejected .then(() => { expect(called).to.be.false }) }) @@ -55,9 +58,11 @@ describe('withCluster', () => { let addon = { name: 'kafka-1' } fetchOne = () => Promise.resolve(addon) let calledWith = addon - return expect(co.wrap(clusters.withCluster)(heroku, - 'my-app', 'kafka-1', - function * (arg) { calledWith = arg })) + return expect(co.wrap(clusters.withCluster)( + heroku, + 'my-app', 'kafka-1', + function * (arg) { calledWith = arg }) + ) .to.be.fulfilled .then(() => { expect(calledWith).to.equal(addon) }) }) @@ -67,9 +72,11 @@ describe('withCluster', () => { it('warns and exits if no add-ons are found', () => { fetchAll = () => Promise.resolve([]) let called = false - return expect(co.wrap(clusters.withCluster)(heroku, - 'my-app', null, - function * (arg) { called = true })) + return expect(co.wrap(clusters.withCluster)( + heroku, + 'my-app', null, + function * (arg) { called = true }) + ) .to.be.rejectedWith(cli.exit.ErrorExit, /found no kafka add-ons on my-app/) .then(() => { expect(called).to.be.false }) }) @@ -77,9 +84,11 @@ describe('withCluster', () => { it('warns and exits if multiple add-ons are found', () => { fetchAll = () => Promise.resolve([ { name: 'kafka-1' }, { name: 'kafka-2' } ]) let called = false - return expect(co.wrap(clusters.withCluster)(heroku, - 'my-app', null, - function * (arg) { called = true })) + return expect(co.wrap(clusters.withCluster)( + heroku, + 'my-app', null, + function * (arg) { called = true }) + ) .to.be.rejectedWith(cli.exit.ErrorExit, /found more than one kafka add-on on my-app: kafka-1, kafka-2/) .then(() => { expect(called).to.be.false }) }) @@ -88,9 +97,11 @@ describe('withCluster', () => { let addon = { name: 'kafka-1' } fetchAll = () => Promise.resolve([ addon ]) let calledWith = addon - return expect(co.wrap(clusters.withCluster)(heroku, - 'my-app', null, - function * (arg) { calledWith = arg })) + return expect(co.wrap(clusters.withCluster)( + heroku, + 'my-app', null, + function * (arg) { calledWith = arg }) + ) .to.be.fulfilled .then(() => { expect(calledWith).to.equal(addon) }) }) diff --git a/yarn.lock b/yarn.lock index a1da310..c0366f7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17,8 +17,8 @@ acorn@^3.0.4: resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" acorn@^5.0.1: - version "5.0.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.0.3.tgz#c460df08491463f028ccb82eab3730bf01087b3d" + version "5.1.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.1.tgz#53fe161111f912ab999ee887a90a0bc52822fd75" ajv-keywords@^1.0.0: version "1.5.1" @@ -131,13 +131,6 @@ array-unique@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" -array.prototype.find@^2.0.1: - version "2.0.4" - resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.0.4.tgz#556a5c5362c08648323ddaeb9de9d14bc1864c90" - dependencies: - define-properties "^1.1.2" - es-abstract "^1.7.0" - arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -318,7 +311,7 @@ buffer-crc32@^0.2.5: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" -builtin-modules@^1.0.0: +builtin-modules@^1.0.0, builtin-modules@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" @@ -415,7 +408,7 @@ cli-boxes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" -cli-cursor@^1.0.1, cli-cursor@^1.0.2: +cli-cursor@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" dependencies: @@ -490,7 +483,7 @@ concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -concat-stream@^1.4.6: +concat-stream@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" dependencies: @@ -517,6 +510,10 @@ console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + convert-source-map@^1.3.0: version "1.5.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" @@ -599,17 +596,13 @@ date-fns@^1.27.2: version "1.28.5" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.28.5.tgz#257cfc45d322df45ef5658665967ee841cd73faf" -debug-log@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" - debug@2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b" dependencies: ms "0.7.2" -debug@2.6.8, debug@^2.1.1, debug@^2.2.0, debug@^2.6.3: +debug@2.6.8, debug@^2.2.0, debug@^2.6.3, debug@^2.6.8: version "2.6.8" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" dependencies: @@ -643,24 +636,6 @@ default-require-extensions@^1.0.0: dependencies: strip-bom "^2.0.0" -define-properties@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" - dependencies: - foreach "^2.0.5" - object-keys "^1.0.8" - -deglob@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/deglob/-/deglob-2.1.0.tgz#4d44abe16ef32c779b4972bd141a80325029a14a" - dependencies: - find-root "^1.0.0" - glob "^7.0.5" - ignore "^3.0.9" - pkg-config "^1.1.0" - run-parallel "^1.1.2" - uniq "^1.0.1" - del@^2.0.2, del@^2.2.0: version "2.2.2" resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" @@ -691,13 +666,20 @@ diff@3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" -doctrine@^1.2.2: +doctrine@1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" dependencies: esutils "^2.0.2" isarray "^1.0.0" +doctrine@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63" + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + dot-prop@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.1.1.tgz#a8493f0b7b5eeec82525b5c7587fa7de7ca859c1" @@ -724,23 +706,6 @@ error-ex@^1.2.0: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.7.0.tgz#dfade774e01bfcd97f96180298c449c8623fb94c" - dependencies: - es-to-primitive "^1.1.1" - function-bind "^1.1.0" - is-callable "^1.1.3" - is-regex "^1.0.3" - -es-to-primitive@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" - dependencies: - is-callable "^1.1.1" - is-date-object "^1.0.1" - is-symbol "^1.0.1" - es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14: version "0.10.22" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.22.tgz#1876c51f990769c112c781ea3ebe89f84fd39071" @@ -748,7 +713,7 @@ es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14: es6-iterator "2" es6-symbol "~3.1" -es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1: +es6-iterator@2: version "2.0.1" resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512" dependencies: @@ -756,163 +721,113 @@ es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1: es5-ext "^0.10.14" es6-symbol "^3.1" -es6-map@^0.1.3: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-set "~0.1.5" - es6-symbol "~3.1.1" - event-emitter "~0.3.5" - -es6-set@~0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-symbol "3.1.1" - event-emitter "~0.3.5" - -es6-symbol@3.1.1, es6-symbol@^3.0.2, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.1: +es6-symbol@^3.0.2, es6-symbol@^3.1, es6-symbol@~3.1: version "3.1.1" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" dependencies: d "1" es5-ext "~0.10.14" -es6-weak-map@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" - dependencies: - d "1" - es5-ext "^0.10.14" - es6-iterator "^2.0.1" - es6-symbol "^3.1.1" - escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" -escope@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" - dependencies: - es6-map "^0.1.3" - es6-weak-map "^2.0.1" - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-config-standard-jsx@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-3.0.0.tgz#d8c10a3cfb81fae4068589963df7516ffc0bdd4e" +eslint-config-standard@^10.2.1: + version "10.2.1" + resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz#c061e4d066f379dc17cd562c64e819b4dd454591" -eslint-config-standard@6.0.0-beta.3: - version "6.0.0-beta.3" - resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-6.0.0-beta.3.tgz#2ece84d162b66c6fd29fae31267b41090d03055e" - -eslint-config-standard@^6.0.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-6.2.1.tgz#d3a68aafc7191639e7ee441e7348739026354292" +eslint-import-resolver-node@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz#4422574cde66a9a7b099938ee4d508a199e0e3cc" + dependencies: + debug "^2.6.8" + resolve "^1.2.0" -eslint-plugin-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-2.0.1.tgz#a9759cefa5e38ab11bb2ef65a04ef042309aa0a4" +eslint-module-utils@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz#abaec824177613b8a95b299639e1b6facf473449" + dependencies: + debug "^2.6.8" + pkg-dir "^1.0.0" -eslint-plugin-react@^6.0.0: - version "6.10.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz#c5435beb06774e12c7db2f6abaddcbf900cd3f78" +eslint-plugin-import@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.7.0.tgz#21de33380b9efb55f5ef6d2e210ec0e07e7fa69f" dependencies: - array.prototype.find "^2.0.1" - doctrine "^1.2.2" + builtin-modules "^1.1.1" + contains-path "^0.1.0" + debug "^2.6.8" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.1" + eslint-module-utils "^2.1.1" has "^1.0.1" - jsx-ast-utils "^1.3.4" - object.assign "^4.0.4" + lodash.cond "^4.3.0" + minimatch "^3.0.3" + read-pkg-up "^2.0.0" -eslint-plugin-standard@^2.0.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-2.3.1.tgz#6765bd2a6d9ecdc7bdf1b145ae4bb30e2b7b86f8" +eslint-plugin-node@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-5.1.0.tgz#bc8cdb85180d0b4d946a2531640e2a4dd7a4e6d4" + dependencies: + ignore "^3.3.3" + minimatch "^3.0.4" + resolve "^1.3.3" + semver "5.3.0" -eslint@^2.1.0: - version "2.13.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-2.13.1.tgz#e4cc8fa0f009fb829aaae23855a29360be1f6c11" +eslint-plugin-promise@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-3.5.0.tgz#78fbb6ffe047201627569e85a6c5373af2a68fca" + +eslint-plugin-standard@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz#34d0c915b45edc6f010393c7eef3823b08565cf2" + +eslint-scope@^3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" dependencies: - chalk "^1.1.3" - concat-stream "^1.4.6" - debug "^2.1.1" - doctrine "^1.2.2" - es6-map "^0.1.3" - escope "^3.6.0" - espree "^3.1.6" - estraverse "^4.2.0" - esutils "^2.0.2" - file-entry-cache "^1.1.1" - glob "^7.0.3" - globals "^9.2.0" - ignore "^3.1.2" - imurmurhash "^0.1.4" - inquirer "^0.12.0" - is-my-json-valid "^2.10.0" - is-resolvable "^1.0.0" - js-yaml "^3.5.1" - json-stable-stringify "^1.0.0" - levn "^0.3.0" - lodash "^4.0.0" - mkdirp "^0.5.0" - optionator "^0.8.1" - path-is-absolute "^1.0.0" - path-is-inside "^1.0.1" - pluralize "^1.2.1" - progress "^1.1.8" - require-uncached "^1.0.2" - shelljs "^0.6.0" - strip-json-comments "~1.0.1" - table "^3.7.8" - text-table "~0.2.0" - user-home "^2.0.0" + esrecurse "^4.1.0" + estraverse "^4.1.1" -eslint@~3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.3.1.tgz#ed4ba34be175e2286c90a42ff636bf5e26d50968" +eslint@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.1.1.tgz#facbdfcfe3e0facd3a8b80dc98c4e6c13ae582df" dependencies: + babel-code-frame "^6.22.0" chalk "^1.1.3" - concat-stream "^1.4.6" - debug "^2.1.1" - doctrine "^1.2.2" - escope "^3.6.0" - espree "^3.1.6" + concat-stream "^1.6.0" + debug "^2.6.8" + doctrine "^2.0.0" + eslint-scope "^3.7.1" + espree "^3.4.3" + esquery "^1.0.0" estraverse "^4.2.0" esutils "^2.0.2" - file-entry-cache "^1.3.1" - glob "^7.0.3" - globals "^9.2.0" - ignore "^3.1.2" + file-entry-cache "^2.0.0" + glob "^7.1.2" + globals "^9.17.0" + ignore "^3.3.3" imurmurhash "^0.1.4" - inquirer "^0.12.0" - is-my-json-valid "^2.10.0" + inquirer "^3.0.6" + is-my-json-valid "^2.16.0" is-resolvable "^1.0.0" - js-yaml "^3.5.1" - json-stable-stringify "^1.0.0" + js-yaml "^3.8.4" + json-stable-stringify "^1.0.1" levn "^0.3.0" - lodash "^4.0.0" - mkdirp "^0.5.0" + lodash "^4.17.4" + minimatch "^3.0.2" + mkdirp "^0.5.1" natural-compare "^1.4.0" - optionator "^0.8.1" - path-is-inside "^1.0.1" - pluralize "^1.2.1" - progress "^1.1.8" - require-uncached "^1.0.2" - shelljs "^0.6.0" - strip-bom "^3.0.0" - strip-json-comments "~1.0.1" - table "^3.7.8" + optionator "^0.8.2" + path-is-inside "^1.0.2" + pluralize "^4.0.0" + progress "^2.0.0" + require-uncached "^1.0.3" + strip-json-comments "~2.0.1" + table "^4.0.1" text-table "~0.2.0" - user-home "^2.0.0" -espree@^3.1.6: +espree@^3.4.3: version "3.4.3" resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.3.tgz#2910b5ccd49ce893c2ffffaab4fd8b3a31b82374" dependencies: @@ -923,36 +838,35 @@ esprima@^2.6.0: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" +esprima@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + esprima@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.0.0.tgz#53cf247acda77313e551c3aa2e73342d3fb4f7d9" +esquery@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa" + dependencies: + estraverse "^4.0.0" + esrecurse@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.1.0.tgz#4713b6536adf7f2ac4f327d559e7756bff648220" + version "4.2.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163" dependencies: - estraverse "~4.1.0" + estraverse "^4.1.0" object-assign "^4.0.1" -estraverse@^4.1.1, estraverse@^4.2.0: +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" -estraverse@~4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.1.1.tgz#f6caca728933a850ef90661d0e17982ba47111a2" - esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" -event-emitter@~0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - dependencies: - d "1" - es5-ext "~0.10.14" - execa@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.4.0.tgz#4eb6467a36a095fabb2970ff9d5e3fb7bce6ebc3" @@ -1018,7 +932,7 @@ fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" -figures@^1.3.5, figures@^1.7.0: +figures@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" dependencies: @@ -1031,9 +945,9 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" -file-entry-cache@^1.1.1, file-entry-cache@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-1.3.1.tgz#44c61ea607ae4be9c1402f41f44270cbfe334ff8" +file-entry-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" dependencies: flat-cache "^1.2.1" object-assign "^4.0.1" @@ -1067,10 +981,6 @@ find-cache-dir@^0.1.1: mkdirp "^0.5.1" pkg-dir "^1.0.0" -find-root@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.0.0.tgz#962ff211aab25c6520feeeb8d6287f8f6e95807a" - find-up@^1.0.0, find-up@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -1103,10 +1013,6 @@ for-own@^0.1.4: dependencies: for-in "^1.0.1" -foreach@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - foreground-child@^1.5.3, foreground-child@^1.5.6: version "1.5.6" resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9" @@ -1139,7 +1045,7 @@ fstream@^1.0.0, fstream@^1.0.2: mkdirp ">=0.5 0" rimraf "2" -function-bind@^1.0.2, function-bind@^1.1.0: +function-bind@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" @@ -1175,10 +1081,6 @@ get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" -get-stdin@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398" - get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -1213,7 +1115,7 @@ glob@7.1.1: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.3, glob@^7.0.5, glob@^7.0.6: +glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -1224,7 +1126,7 @@ glob@^7.0.3, glob@^7.0.5, glob@^7.0.6: once "^1.3.0" path-is-absolute "^1.0.0" -globals@^9.0.0, globals@^9.2.0: +globals@^9.0.0, globals@^9.17.0: version "9.17.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286" @@ -1386,13 +1288,6 @@ hoek@2.x.x: version "2.16.3" resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" - hosted-git-info@^2.1.4: version "2.4.2" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.2.tgz#0076b9f46a270506ddbaaea56496897460612a67" @@ -1413,7 +1308,7 @@ iconv-lite@^0.4.17: version "0.4.17" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.17.tgz#4fdaa3b38acbc2c031b045d0edcdfe1ecab18c8d" -ignore@^3.0.9, ignore@^3.1.2: +ignore@^3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.3.tgz#432352e57accd87ab3110e82d3fea0e47812156d" @@ -1446,24 +1341,6 @@ ini@~1.3.0: version "1.3.4" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" -inquirer@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" - dependencies: - ansi-escapes "^1.1.0" - ansi-regex "^2.0.0" - chalk "^1.0.0" - cli-cursor "^1.0.1" - cli-width "^2.0.0" - figures "^1.3.5" - lodash "^4.3.0" - readline2 "^1.0.1" - run-async "^0.1.0" - rx-lite "^3.1.2" - string-width "^1.0.1" - strip-ansi "^3.0.0" - through "^2.3.6" - inquirer@^3.0.6: version "3.0.6" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.0.6.tgz#e04aaa9d05b7a3cb9b0f407d04375f0447190347" @@ -1506,14 +1383,6 @@ is-builtin-module@^1.0.0: dependencies: builtin-modules "^1.0.0" -is-callable@^1.1.1, is-callable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" - -is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" - is-dotfile@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" @@ -1554,7 +1423,7 @@ is-glob@^2.0.0, is-glob@^2.0.1: dependencies: is-extglob "^1.0.0" -is-my-json-valid@^2.10.0, is-my-json-valid@^2.12.4: +is-my-json-valid@^2.12.4, is-my-json-valid@^2.16.0: version "2.16.0" resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693" dependencies: @@ -1617,12 +1486,6 @@ is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" -is-regex@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - dependencies: - has "^1.0.1" - is-resolvable@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" @@ -1637,10 +1500,6 @@ is-stream@^1.0.0, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" -is-symbol@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" - is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -1724,13 +1583,20 @@ js-tokens@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" -js-yaml@3.6.1, js-yaml@^3.5.1: +js-yaml@3.6.1: version "3.6.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.6.1.tgz#6e5fe67d8b205ce4d22fad05b7781e8dadcc4b30" dependencies: argparse "^1.0.7" esprima "^2.6.0" +js-yaml@^3.8.4: + version "3.8.4" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.4.tgz#520b4564f86573ba96662af85a8cafa7b4b5a6f6" + dependencies: + argparse "^1.0.7" + esprima "^3.1.1" + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" @@ -1747,7 +1613,7 @@ json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" -json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: +json-stable-stringify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" dependencies: @@ -1778,10 +1644,6 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.3.6" -jsx-ast-utils@^1.3.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz#3867213e8dd79bf1e8f2300c0cfc1efb182c0df1" - kind-of@^3.0.2: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -1922,6 +1784,10 @@ lodash.ary@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.ary/-/lodash.ary-4.1.1.tgz#66065fa91bacc7a034d9c8fce52f83d3c7e40212" +lodash.cond@^4.3.0: + version "4.5.2" + resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5" + lodash.create@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7" @@ -2026,7 +1892,7 @@ lodash.values@4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.values/-/lodash.values-4.3.0.tgz#a3a6c2b0ebecc5c2cba1c17e6e620fe81b53d347" -lodash@^4.0.0, lodash@^4.0.1, lodash@^4.1.0, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.0: +lodash@^4.0.0, lodash@^4.0.1, lodash@^4.1.0, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.0: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" @@ -2154,7 +2020,7 @@ mimic-fn@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" -minimatch@^3.0.2, minimatch@^3.0.4: +minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: @@ -2164,7 +2030,7 @@ minimist@0.0.8, minimist@~0.0.1: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" -minimist@1.2.0, minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0: +minimist@1.2.0, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" @@ -2202,10 +2068,6 @@ ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" -mute-stream@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" - mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" @@ -2385,18 +2247,6 @@ object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" -object-keys@^1.0.10, object-keys@^1.0.8: - version "1.0.11" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" - -object.assign@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.0.4.tgz#b1c9cc044ef1b9fe63606fc141abbb32e14730cc" - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.0" - object-keys "^1.0.10" - object.omit@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" @@ -2433,7 +2283,7 @@ optimist@^0.6.1: minimist "~0.0.1" wordwrap "~0.0.2" -optionator@^0.8.1: +optionator@^0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" dependencies: @@ -2463,7 +2313,7 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1: +os-tmpdir@^1.0.0, os-tmpdir@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -2532,7 +2382,7 @@ path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" -path-is-inside@^1.0.1: +path-is-inside@^1.0.1, path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" @@ -2576,30 +2426,15 @@ pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" -pkg-conf@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.0.0.tgz#071c87650403bccfb9c627f58751bfe47c067279" - dependencies: - find-up "^2.0.0" - load-json-file "^2.0.0" - -pkg-config@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/pkg-config/-/pkg-config-1.1.1.tgz#557ef22d73da3c8837107766c52eadabde298fe4" - dependencies: - debug-log "^1.0.0" - find-root "^1.0.0" - xtend "^4.0.1" - pkg-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" dependencies: find-up "^1.0.0" -pluralize@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" +pluralize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-4.0.0.tgz#59b708c1c0190a2f692f1c7618c446b052fd1762" prelude-ls@~1.1.2: version "1.1.2" @@ -2621,9 +2456,9 @@ process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" -progress@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" +progress@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" propagate@0.4.0: version "0.4.0" @@ -2715,14 +2550,6 @@ readable-stream@^2.0.6, readable-stream@^2.2.2: string_decoder "~1.0.0" util-deprecate "~1.0.1" -readline2@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - mute-stream "0.0.5" - redent@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" @@ -2811,7 +2638,7 @@ require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" -require-uncached@^1.0.2: +require-uncached@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" dependencies: @@ -2826,6 +2653,12 @@ resolve-from@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" +resolve@^1.2.0, resolve@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5" + dependencies: + path-parse "^1.0.5" + resolve@~1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" @@ -2856,26 +2689,12 @@ rimraf@2, rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.5.4, rimraf@^2.6.1: dependencies: glob "^7.0.5" -run-async@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" - dependencies: - once "^1.3.0" - run-async@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" dependencies: is-promise "^2.1.0" -run-parallel@^1.1.2: - version "1.1.6" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.6.tgz#29003c9a2163e01e2d2dfc90575f2c6c1d61a039" - -rx-lite@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" - rx@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" @@ -2896,7 +2715,7 @@ semver-diff@^2.0.0: dependencies: semver "^5.0.3" -"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.2.0, semver@^5.3.0: +"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@5.3.0, semver@^5.0.3, semver@^5.1.0, semver@^5.2.0, semver@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -2914,10 +2733,6 @@ shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" -shelljs@^0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.6.1.tgz#ec6211bed1920442088fe0f70b2837232ed2c8a8" - signal-exit@^3.0.0, signal-exit@^3.0.1, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" @@ -3008,28 +2823,6 @@ sshpk@^1.7.0: jsbn "~0.1.0" tweetnacl "~0.14.0" -standard-engine@^5.0.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/standard-engine/-/standard-engine-5.4.0.tgz#e0e86959ea0786425d3383e40c1bf70d2f985579" - dependencies: - deglob "^2.1.0" - get-stdin "^5.0.1" - home-or-tmp "^2.0.0" - minimist "^1.1.0" - pkg-conf "^2.0.0" - -standard@8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/standard/-/standard-8.0.0.tgz#d3ad1c7fccbfe911bf9d06e8321e17525dde99e4" - dependencies: - eslint "~3.3.1" - eslint-config-standard "6.0.0-beta.3" - eslint-config-standard-jsx "3.0.0" - eslint-plugin-promise "^2.0.0" - eslint-plugin-react "^6.0.0" - eslint-plugin-standard "^2.0.0" - standard-engine "^5.0.0" - stream-to-observable@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/stream-to-observable/-/stream-to-observable-0.1.0.tgz#45bf1d9f2d7dc09bed81f1c307c430e68b84cffe" @@ -3091,10 +2884,6 @@ strip-indent@^1.0.1: dependencies: get-stdin "^4.0.1" -strip-json-comments@~1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91" - strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" @@ -3119,9 +2908,9 @@ symbol-observable@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" -table@^3.7.8: - version "3.8.3" - resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" +table@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/table/-/table-4.0.1.tgz#a8116c133fac2c61f4a420ab6cdf5c4d61f0e435" dependencies: ajv "^4.7.0" ajv-keywords "^1.0.0" @@ -3233,10 +3022,6 @@ uglify-to-browserify@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - unique-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" @@ -3266,12 +3051,6 @@ url-parse-lax@^1.0.0: dependencies: prepend-http "^1.0.1" -user-home@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" - dependencies: - os-homedir "^1.0.0" - util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -3378,7 +3157,7 @@ xdg-basedir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" -xtend@^4.0.0, xtend@^4.0.1: +xtend@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"