diff --git a/__tests__/always-return.js b/__tests__/always-return.js index 94ceff98..133678af 100644 --- a/__tests__/always-return.js +++ b/__tests__/always-return.js @@ -4,8 +4,8 @@ const rule = require('../rules/always-return') const RuleTester = require('eslint').RuleTester const ruleTester = new RuleTester({ parserOptions: { - ecmaVersion: 6 - } + ecmaVersion: 6, + }, }) const message = 'Each then() should return a value or throw' @@ -41,58 +41,58 @@ ruleTester.run('always-return', rule, { two: x === 2 ? 1 : 0 } }) - })` + })`, ], invalid: [ { code: 'hey.then(x => {})', - errors: [{ message }] + errors: [{ message }], }, { code: 'hey.then(function() { })', - errors: [{ message }] + errors: [{ message }], }, { code: 'hey.then(function() { }).then(x)', - errors: [{ message }] + errors: [{ message }], }, { code: 'hey.then(function() { }).then(function() { })', - errors: [{ message }, { message }] + errors: [{ message }, { message }], }, { code: 'hey.then(function() { return; }).then(function() { })', - errors: [{ message }] + errors: [{ message }], }, { code: 'hey.then(function() { doSomethingWicked(); })', - errors: [{ message }] + errors: [{ message }], }, { code: 'hey.then(function() { if (x) { return x; } })', - errors: [{ message }] + errors: [{ message }], }, { code: 'hey.then(function() { if (x) { return x; } else { }})', - errors: [{ message }] + errors: [{ message }], }, { code: 'hey.then(function() { if (x) { } else { return x; }})', - errors: [{ message }] + errors: [{ message }], }, { code: 'hey.then(function() { if (x) { return you.then(function() { return x; }); } })', - errors: [{ message }] + errors: [{ message }], }, { code: 'hey.then( x => { x ? x.id : null })', - errors: [{ message }] + errors: [{ message }], }, { code: 'hey.then(function(x) { x ? x.id : null })', - errors: [{ message }] + errors: [{ message }], }, { code: `(function() { @@ -105,7 +105,7 @@ ruleTester.run('always-return', rule, { }) }) })()`, - errors: [{ message }] - } - ] + errors: [{ message }], + }, + ], }) diff --git a/__tests__/avoid-new.js b/__tests__/avoid-new.js index ec8b98f5..55b63af3 100644 --- a/__tests__/avoid-new.js +++ b/__tests__/avoid-new.js @@ -4,8 +4,8 @@ const rule = require('../rules/avoid-new') const RuleTester = require('eslint').RuleTester const ruleTester = new RuleTester({ parserOptions: { - ecmaVersion: 6 - } + ecmaVersion: 6, + }, }) const errorMessage = 'Avoid creating new promises.' @@ -17,21 +17,21 @@ ruleTester.run('avoid-new', rule, { 'Promise.all()', 'new Horse()', 'new PromiseLikeThing()', - 'new Promise.resolve()' + 'new Promise.resolve()', ], invalid: [ { code: 'var x = new Promise(function (x, y) {})', - errors: [{ message: errorMessage }] + errors: [{ message: errorMessage }], }, { code: 'new Promise()', - errors: [{ message: errorMessage }] + errors: [{ message: errorMessage }], }, { code: 'Thing(new Promise(() => {}))', - errors: [{ message: errorMessage }] - } - ] + errors: [{ message: errorMessage }], + }, + ], }) diff --git a/__tests__/catch-or-return.js b/__tests__/catch-or-return.js index 4a16fbad..c9f76ff2 100644 --- a/__tests__/catch-or-return.js +++ b/__tests__/catch-or-return.js @@ -22,7 +22,7 @@ ruleTester.run('catch-or-return', rule, { { code: 'postJSON("/smajobber/api/reportJob.json")\n\t.then(()=>this.setState())\n\t.catch(()=>this.setState())', - parserOptions: { ecmaVersion: 6 } + parserOptions: { ecmaVersion: 6 }, }, // return @@ -34,187 +34,187 @@ ruleTester.run('catch-or-return', rule, { // allowThen - .then(null, fn) { code: 'frank().then(go).then(null, doIt)', - options: [{ allowThen: true }] + options: [{ allowThen: true }], }, { code: 'frank().then(go).then().then().then().then(null, doIt)', - options: [{ allowThen: true }] + options: [{ allowThen: true }], }, { code: 'frank().then(go).then().then(null, function() { /* why bother */ })', - options: [{ allowThen: true }] + options: [{ allowThen: true }], }, { code: 'frank.then(go).then(to).then(null, jail)', - options: [{ allowThen: true }] + options: [{ allowThen: true }], }, // allowThen - .then(null, fn) { code: 'frank().then(a, b)', options: [{ allowThen: true }] }, { code: 'frank().then(a).then(b).then(null, c)', - options: [{ allowThen: true }] + options: [{ allowThen: true }], }, { code: 'frank().then(a).then(b).then(c, d)', - options: [{ allowThen: true }] + options: [{ allowThen: true }], }, { code: 'frank().then(a).then(b).then().then().then(null, doIt)', - options: [{ allowThen: true }] + options: [{ allowThen: true }], }, { code: 'frank().then(a).then(b).then(null, function() { /* why bother */ })', - options: [{ allowThen: true }] + options: [{ allowThen: true }], }, // allowThen - .then(fn, fn) { code: 'frank().then(go).then(zam, doIt)', - options: [{ allowThen: true }] + options: [{ allowThen: true }], }, { code: 'frank().then(go).then().then().then().then(wham, doIt)', - options: [{ allowThen: true }] + options: [{ allowThen: true }], }, { code: 'frank().then(go).then().then(function() {}, function() { /* why bother */ })', - options: [{ allowThen: true }] + options: [{ allowThen: true }], }, { code: 'frank.then(go).then(to).then(pewPew, jail)', - options: [{ allowThen: true }] + options: [{ allowThen: true }], }, // allowFinally - .finally(fn) { code: 'frank().then(go).catch(doIt).finally(fn)', - options: [{ allowFinally: true }] + options: [{ allowFinally: true }], }, { code: 'frank().then(go).then().then().then().catch(doIt).finally(fn)', - options: [{ allowFinally: true }] + options: [{ allowFinally: true }], }, { code: 'frank().then(go).then().catch(function() { /* why bother */ }).finally(fn)', - options: [{ allowFinally: true }] + options: [{ allowFinally: true }], }, // terminationMethod=done - .done(null, fn) { code: 'frank().then(go).done()', - options: [{ terminationMethod: 'done' }] + options: [{ terminationMethod: 'done' }], }, // terminationMethod=[catch, done] - .done(null, fn) { code: 'frank().then(go).catch()', - options: [{ terminationMethod: ['catch', 'done'] }] + options: [{ terminationMethod: ['catch', 'done'] }], }, { code: 'frank().then(go).done()', - options: [{ terminationMethod: ['catch', 'done'] }] + options: [{ terminationMethod: ['catch', 'done'] }], }, { code: 'frank().then(go).finally()', - options: [{ terminationMethod: ['catch', 'finally'] }] - } + options: [{ terminationMethod: ['catch', 'finally'] }], + }, ], invalid: [ // catch failures { code: 'function callPromise(promise, cb) { promise.then(cb) }', - errors: [{ message: catchMessage }] + errors: [{ message: catchMessage }], }, { code: 'fetch("http://www.yahoo.com").then(console.log.bind(console))', - errors: [{ message: catchMessage }] + errors: [{ message: catchMessage }], }, { code: 'a.then(function() { return "x"; }).then(function(y) { throw y; })', - errors: [{ message: catchMessage }] + errors: [{ message: catchMessage }], }, { code: 'Promise.resolve(frank)', - errors: [{ message: catchMessage }] + errors: [{ message: catchMessage }], }, { code: 'frank().then(to).catch(fn).then(foo)', - errors: [{ message: catchMessage }] + errors: [{ message: catchMessage }], }, { code: 'frank().finally(fn)', - errors: [{ message: catchMessage }] + errors: [{ message: catchMessage }], }, { code: 'frank().then(to).finally(fn)', - errors: [{ message: catchMessage }] + errors: [{ message: catchMessage }], }, { code: 'frank().then(go).catch(doIt).finally(fn)', - errors: [{ message: catchMessage }] + errors: [{ message: catchMessage }], }, { code: 'frank().then(go).then().then().then().catch(doIt).finally(fn)', - errors: [{ message: catchMessage }] + errors: [{ message: catchMessage }], }, { code: 'frank().then(go).then().catch(function() { /* why bother */ }).finally(fn)', - errors: [{ message: catchMessage }] + errors: [{ message: catchMessage }], }, // return failures { code: 'function a() { frank().then(go) }', - errors: [{ message: catchMessage }] + errors: [{ message: catchMessage }], }, { code: 'function a() { frank().then(go).then().then().then() }', - errors: [{ message: catchMessage }] + errors: [{ message: catchMessage }], }, { code: 'function a() { frank().then(go).then()}', - errors: [{ message: catchMessage }] + errors: [{ message: catchMessage }], }, { code: 'function a() { frank.then(go).then(to) }', - errors: [{ message: catchMessage }] + errors: [{ message: catchMessage }], }, // allowFinally=true failures { code: 'frank().then(go).catch(doIt).finally(fn).then(foo)', options: [{ allowFinally: true }], - errors: [{ message: catchMessage }] + errors: [{ message: catchMessage }], }, { code: 'frank().then(go).catch(doIt).finally(fn).foobar(foo)', options: [{ allowFinally: true }], - errors: [{ message: catchMessage }] + errors: [{ message: catchMessage }], }, // terminationMethod=done - .done(null, fn) { code: 'frank().then(go)', options: [{ terminationMethod: 'done' }], - errors: [{ message: doneMessage }] + errors: [{ message: doneMessage }], }, { code: 'frank().catch(go)', options: [{ terminationMethod: 'done' }], - errors: [{ message: doneMessage }] + errors: [{ message: doneMessage }], }, // assume somePromise.ANYTHING() is a new promise { code: 'frank().catch(go).someOtherMethod()', - errors: [{ message: catchMessage }] - } - ] + errors: [{ message: catchMessage }], + }, + ], }) diff --git a/__tests__/no-callback-in-promise.js b/__tests__/no-callback-in-promise.js index a510994d..8c5cd16d 100644 --- a/__tests__/no-callback-in-promise.js +++ b/__tests__/no-callback-in-promise.js @@ -4,8 +4,8 @@ const rule = require('../rules/no-callback-in-promise') const RuleTester = require('eslint').RuleTester const ruleTester = new RuleTester({ parserOptions: { - ecmaVersion: 6 - } + ecmaVersion: 6, + }, }) const errorMessage = 'Avoid calling back inside of a promise.' @@ -24,56 +24,59 @@ ruleTester.run('no-callback-in-promise', rule, { // exceptions test { code: 'a.then(() => next())', - options: [{ exceptions: ['next'] }] - } + options: [{ exceptions: ['next'] }], + }, ], invalid: [ { code: 'a.then(cb)', - errors: [{ message: errorMessage, column: 8 }] + errors: [{ message: errorMessage, column: 8 }], }, { code: 'a.then(() => cb())', - errors: [{ message: errorMessage }] + errors: [{ message: errorMessage }], }, { code: 'a.then(function(err) { cb(err) })', - errors: [{ message: errorMessage, column: 24 }] + errors: [{ message: errorMessage, column: 24 }], }, { code: 'a.then(function(data) { cb(data) }, function(err) { cb(err) })', errors: [ { column: 25, message: errorMessage }, - { column: 53, message: errorMessage } - ] + { column: 53, message: errorMessage }, + ], }, { code: 'a.catch(function(err) { cb(err) })', - errors: [{ message: errorMessage }] + errors: [{ message: errorMessage }], }, // callback should also complain { code: 'a.then(callback)', - errors: [{ message: errorMessage, column: 8 }] + errors: [{ message: errorMessage, column: 8 }], }, { code: 'a.then(() => callback())', - errors: [{ message: errorMessage }] + errors: [{ message: errorMessage }], }, { code: 'a.then(function(err) { callback(err) })', - errors: [{ message: errorMessage, column: 24 }] + errors: [{ message: errorMessage, column: 24 }], }, { code: 'a.then(function(data) { callback(data) }, function(err) { callback(err) })', - errors: [{ message: errorMessage }, { column: 59, message: errorMessage }] + errors: [ + { message: errorMessage }, + { column: 59, message: errorMessage }, + ], }, { code: 'a.catch(function(err) { callback(err) })', - errors: [{ message: errorMessage }] - } - ] + errors: [{ message: errorMessage }], + }, + ], }) diff --git a/__tests__/no-native.js b/__tests__/no-native.js index f980de3d..75e14228 100644 --- a/__tests__/no-native.js +++ b/__tests__/no-native.js @@ -5,45 +5,45 @@ const RuleTester = require('eslint').RuleTester const ruleTester = new RuleTester({ parserOptions: { ecmaVersion: 6, - sourceType: 'module' - } + sourceType: 'module', + }, }) ruleTester.run('no-native', rule, { valid: [ 'var Promise = null; function x() { return Promise.resolve("hi"); }', 'var Promise = window.Promise || require("bluebird"); var x = Promise.reject();', - 'import Promise from "bluebird"; var x = Promise.reject();' + 'import Promise from "bluebird"; var x = Promise.reject();', ], invalid: [ { code: 'new Promise(function(reject, resolve) { })', - errors: [{ message: '"Promise" is not defined.' }] + errors: [{ message: '"Promise" is not defined.' }], }, { code: 'Promise.resolve()', - errors: [{ message: '"Promise" is not defined.' }] + errors: [{ message: '"Promise" is not defined.' }], }, { code: 'new Promise(function(reject, resolve) { })', errors: [{ message: '"Promise" is not defined.' }], - env: { browser: true } + env: { browser: true }, }, { code: 'new Promise(function(reject, resolve) { })', errors: [{ message: '"Promise" is not defined.' }], - env: { node: true } + env: { node: true }, }, { code: 'Promise.resolve()', errors: [{ message: '"Promise" is not defined.' }], - env: { es6: true } + env: { es6: true }, }, { code: 'Promise.resolve()', errors: [{ message: '"Promise" is not defined.' }], - globals: { Promise: true } - } - ] + globals: { Promise: true }, + }, + ], }) diff --git a/__tests__/no-nesting.js b/__tests__/no-nesting.js index 49be1a10..9a4e26af 100644 --- a/__tests__/no-nesting.js +++ b/__tests__/no-nesting.js @@ -4,8 +4,8 @@ const rule = require('../rules/no-nesting') const RuleTester = require('eslint').RuleTester const ruleTester = new RuleTester({ parserOptions: { - ecmaVersion: 6 - } + ecmaVersion: 6, + }, }) const errorMessage = 'Avoid nesting promises.' @@ -44,41 +44,41 @@ ruleTester.run('no-nesting', rule, { 'doThing().then(function() { return Promise.all([a,b,c]) })', 'doThing().then(function() { return Promise.resolve(4) })', 'doThing().then(() => Promise.resolve(4))', - 'doThing().then(() => Promise.all([a]))' + 'doThing().then(() => Promise.all([a]))', ], invalid: [ { code: 'doThing().then(function() { a.then() })', - errors: [{ message: errorMessage }] + errors: [{ message: errorMessage }], }, { code: 'doThing().then(function() { b.catch() })', - errors: [{ message: errorMessage }] + errors: [{ message: errorMessage }], }, { code: 'doThing().then(function() { return a.then() })', - errors: [{ message: errorMessage }] + errors: [{ message: errorMessage }], }, { code: 'doThing().then(function() { return b.catch() })', - errors: [{ message: errorMessage }] + errors: [{ message: errorMessage }], }, { code: 'doThing().then(() => { a.then() })', - errors: [{ message: errorMessage }] + errors: [{ message: errorMessage }], }, { code: 'doThing().then(() => { b.catch() })', - errors: [{ message: errorMessage }] + errors: [{ message: errorMessage }], }, { code: 'doThing().then(() => a.then())', - errors: [{ message: errorMessage }] + errors: [{ message: errorMessage }], }, { code: 'doThing().then(() => b.catch())', - errors: [{ message: errorMessage }] - } - ] + errors: [{ message: errorMessage }], + }, + ], }) diff --git a/__tests__/no-new-statics.js b/__tests__/no-new-statics.js index 4704490b..0eb9d12f 100644 --- a/__tests__/no-new-statics.js +++ b/__tests__/no-new-statics.js @@ -13,43 +13,43 @@ ruleTester.run('no-new-statics', rule, { 'new Promise(function (resolve, reject) {})', 'new SomeClass()', 'SomeClass.resolve()', - 'new SomeClass.resolve()' + 'new SomeClass.resolve()', ], invalid: [ { code: 'new Promise.resolve()', output: 'Promise.resolve()', - errors: [{ message: "Avoid calling 'new' on 'Promise.resolve()'" }] + errors: [{ message: "Avoid calling 'new' on 'Promise.resolve()'" }], }, { code: 'new Promise.reject()', output: 'Promise.reject()', - errors: [{ message: "Avoid calling 'new' on 'Promise.reject()'" }] + errors: [{ message: "Avoid calling 'new' on 'Promise.reject()'" }], }, { code: 'new Promise.all()', output: 'Promise.all()', - errors: [{ message: "Avoid calling 'new' on 'Promise.all()'" }] + errors: [{ message: "Avoid calling 'new' on 'Promise.all()'" }], }, { code: 'new Promise.race()', output: 'Promise.race()', - errors: [{ message: "Avoid calling 'new' on 'Promise.race()'" }] + errors: [{ message: "Avoid calling 'new' on 'Promise.race()'" }], }, { code: [ 'function foo() {', ' var a = getA()', ' return new Promise.resolve(a)', - '}' + '}', ].join('\n'), output: [ 'function foo() {', ' var a = getA()', ' return Promise.resolve(a)', - '}' + '}', ].join('\n'), - errors: [{ message: "Avoid calling 'new' on 'Promise.resolve()'" }] - } - ] + errors: [{ message: "Avoid calling 'new' on 'Promise.resolve()'" }], + }, + ], }) diff --git a/__tests__/no-promise-in-callback.js b/__tests__/no-promise-in-callback.js index 0a207b8c..61086e15 100644 --- a/__tests__/no-promise-in-callback.js +++ b/__tests__/no-promise-in-callback.js @@ -4,8 +4,8 @@ const rule = require('../rules/no-promise-in-callback') const RuleTester = require('eslint').RuleTester const ruleTester = new RuleTester({ parserOptions: { - ecmaVersion: 6 - } + ecmaVersion: 6, + }, }) const errorMessage = 'Avoid using promises inside of callbacks.' @@ -37,49 +37,49 @@ ruleTester.run('no-promise-in-callback', rule, { 'doThing().then(() => Promise.all([a]))', // weird case, we assume it's not a big deal if you return (even though you may be cheating) - 'a(function(err) { return doThing().then(a) })' + 'a(function(err) { return doThing().then(a) })', ], invalid: [ { code: 'a(function(err) { doThing().then(a) })', - errors: [{ message: errorMessage }] + errors: [{ message: errorMessage }], }, { code: 'a(function(error, zup, supa) { doThing().then(a) })', - errors: [{ message: errorMessage }] + errors: [{ message: errorMessage }], }, { code: 'a(function(error) { doThing().then(a) })', - errors: [{ message: errorMessage }] + errors: [{ message: errorMessage }], }, // arrow function { code: 'a((error) => { doThing().then(a) })', - errors: [{ message: errorMessage }] + errors: [{ message: errorMessage }], }, { code: 'a((error) => doThing().then(a))', - errors: [{ message: errorMessage }] + errors: [{ message: errorMessage }], }, { code: 'a((err, data) => { doThing().then(a) })', - errors: [{ message: errorMessage }] + errors: [{ message: errorMessage }], }, { code: 'a((err, data) => doThing().then(a))', - errors: [{ message: errorMessage }] + errors: [{ message: errorMessage }], }, // function decl. and similar (why not) { code: 'function x(err) { Promise.all() }', - errors: [{ message: errorMessage }] + errors: [{ message: errorMessage }], }, { code: 'let x = (err) => doThingWith(err).then(a)', - errors: [{ message: errorMessage }] - } - ] + errors: [{ message: errorMessage }], + }, + ], }) diff --git a/__tests__/no-return-in-finally.js b/__tests__/no-return-in-finally.js index d401c78f..1e3ca83d 100644 --- a/__tests__/no-return-in-finally.js +++ b/__tests__/no-return-in-finally.js @@ -4,8 +4,8 @@ const RuleTester = require('eslint').RuleTester const rule = require('../rules/no-return-in-finally') const ruleTester = new RuleTester({ parserOptions: { - ecmaVersion: 6 - } + ecmaVersion: 6, + }, }) const message = 'No return in finally' @@ -16,24 +16,24 @@ ruleTester.run('no-return-in-finally', rule, { 'Promise.reject(4).finally(() => { console.log(2) })', 'Promise.reject(4).finally(() => {})', 'myPromise.finally(() => {});', - 'Promise.resolve(1).finally(function () { })' + 'Promise.resolve(1).finally(function () { })', ], invalid: [ { code: 'Promise.resolve(1).finally(() => { return 2 })', - errors: [{ message }] + errors: [{ message }], }, { code: 'Promise.reject(0).finally(() => { return 2 })', - errors: [{ message }] + errors: [{ message }], }, { code: 'myPromise.finally(() => { return 2 });', - errors: [{ message }] + errors: [{ message }], }, { code: 'Promise.resolve(1).finally(function () { return 2 })', - errors: [{ message }] - } - ] + errors: [{ message }], + }, + ], }) diff --git a/__tests__/no-return-wrap.js b/__tests__/no-return-wrap.js index e20ba2db..e5b85178 100644 --- a/__tests__/no-return-wrap.js +++ b/__tests__/no-return-wrap.js @@ -4,8 +4,8 @@ const rule = require('../rules/no-return-wrap') const RuleTester = require('eslint').RuleTester const ruleTester = new RuleTester({ parserOptions: { - ecmaVersion: 6 - } + ecmaVersion: 6, + }, }) const rejectMessage = 'Expected throw instead of Promise.reject' @@ -50,7 +50,7 @@ ruleTester.run('no-return-wrap', rule, { // allow reject if specified { code: 'doThing().then(function() { return Promise.reject(4) })', - options: [{ allowReject: true }] + options: [{ allowReject: true }], }, // not function bind @@ -58,7 +58,7 @@ ruleTester.run('no-return-wrap', rule, { { code: 'doThing().then(() => Promise.reject(4))', - options: [{ allowReject: true }] + options: [{ allowReject: true }], }, // Call expressions that aren't Promise.resolve/reject @@ -67,60 +67,60 @@ ruleTester.run('no-return-wrap', rule, { 'doThing().then(() => { return a() })', 'doThing().then(() => { return Promise.a() })', 'doThing().then(() => a())', - 'doThing().then(() => Promise.a())' + 'doThing().then(() => Promise.a())', ], invalid: [ // wrapped resolve is bad { code: 'doThing().then(function() { return Promise.resolve(4) })', - errors: [{ message: resolveMessage }] + errors: [{ message: resolveMessage }], }, { code: 'doThing().then(null, function() { return Promise.resolve(4) })', - errors: [{ message: resolveMessage }] + errors: [{ message: resolveMessage }], }, { code: 'doThing().catch(function() { return Promise.resolve(4) })', - errors: [{ message: resolveMessage }] + errors: [{ message: resolveMessage }], }, // wrapped reject is bad { code: 'doThing().then(function() { return Promise.reject(4) })', - errors: [{ message: rejectMessage }] + errors: [{ message: rejectMessage }], }, { code: 'doThing().then(null, function() { return Promise.reject(4) })', - errors: [{ message: rejectMessage }] + errors: [{ message: rejectMessage }], }, { code: 'doThing().catch(function() { return Promise.reject(4) })', - errors: [{ message: rejectMessage }] + errors: [{ message: rejectMessage }], }, // needs to also look at weird paths { code: 'doThing().then(function(x) { if (x>1) { return Promise.resolve(4) } else { throw "bad" } })', - errors: [{ message: resolveMessage }] + errors: [{ message: resolveMessage }], }, { code: 'doThing().then(function(x) { if (x>1) { return Promise.reject(4) } })', - errors: [{ message: rejectMessage }] + errors: [{ message: rejectMessage }], }, { code: 'doThing().then(null, function() { if (true && false) { return Promise.resolve() } })', - errors: [{ message: resolveMessage }] + errors: [{ message: resolveMessage }], }, // should do both { code: 'doThing().catch(function(x) {if (x) { return Promise.resolve(4) } else { return Promise.reject() } })', - errors: [{ message: resolveMessage }, { message: rejectMessage }] + errors: [{ message: resolveMessage }, { message: rejectMessage }], }, // should work someday @@ -137,7 +137,7 @@ ruleTester.run('no-return-wrap', rule, { }) return })`, - errors: [{ message: resolveMessage, line: 4 }] + errors: [{ message: resolveMessage, line: 4 }], }, { code: ` @@ -147,7 +147,7 @@ ruleTester.run('no-return-wrap', rule, { }) return })`, - errors: [{ message: resolveMessage, line: 4 }] + errors: [{ message: resolveMessage, line: 4 }], }, { code: ` @@ -158,7 +158,7 @@ ruleTester.run('no-return-wrap', rule, { }) }) })`, - errors: [{ message: resolveMessage, line: 5 }] + errors: [{ message: resolveMessage, line: 5 }], }, { code: ` @@ -172,7 +172,7 @@ ruleTester.run('no-return-wrap', rule, { }) }) })`, - errors: [{ message: resolveMessage, line: 8 }] + errors: [{ message: resolveMessage, line: 8 }], }, // other than "ExpressionStatement" @@ -186,7 +186,7 @@ ruleTester.run('no-return-wrap', rule, { }, } `, - errors: [{ message: resolveMessage, line: 5 }] + errors: [{ message: resolveMessage, line: 5 }], }, { code: ` @@ -196,25 +196,25 @@ ruleTester.run('no-return-wrap', rule, { }) ); `, - errors: [{ message: resolveMessage, line: 4 }] + errors: [{ message: resolveMessage, line: 4 }], }, // function bind { code: 'doThing().then((function() { return Promise.resolve(4) }).bind(this))', - errors: [{ message: resolveMessage }] + errors: [{ message: resolveMessage }], }, { code: 'doThing().then((function() { return Promise.resolve(4) }).bind(this).bind(this))', - errors: [{ message: resolveMessage }] + errors: [{ message: resolveMessage }], }, // arrow functions and other things { code: 'doThing().then(() => { return Promise.resolve(4) })', - errors: [{ message: resolveMessage }] + errors: [{ message: resolveMessage }], }, // issue #150 @@ -226,17 +226,17 @@ ruleTester.run('no-return-wrap', rule, { }) } `, - errors: [{ message: resolveMessage }] + errors: [{ message: resolveMessage }], }, // issue #193 { code: 'doThing().then(() => Promise.resolve(4))', - errors: [{ message: resolveMessage }] + errors: [{ message: resolveMessage }], }, { code: 'doThing().then(() => Promise.reject(4))', - errors: [{ message: rejectMessage }] - } - ] + errors: [{ message: rejectMessage }], + }, + ], }) diff --git a/__tests__/param-names.js b/__tests__/param-names.js index 6d746717..473d51ea 100644 --- a/__tests__/param-names.js +++ b/__tests__/param-names.js @@ -4,8 +4,8 @@ const rule = require('../rules/param-names') const RuleTester = require('eslint').RuleTester const ruleTester = new RuleTester({ parserOptions: { - ecmaVersion: 6 - } + ecmaVersion: 6, + }, }) const message = 'Promise constructor parameters must be named resolve, reject' @@ -16,25 +16,25 @@ ruleTester.run('param-names', rule, { 'new Promise(function(resolve) {})', 'new Promise(resolve => {})', 'new Promise((resolve, reject) => {})', - 'new Promise(() => {})' + 'new Promise(() => {})', ], invalid: [ { code: 'new Promise(function(reject, resolve) {})', - errors: [{ message }] + errors: [{ message }], }, { code: 'new Promise(function(resolve, rej) {})', - errors: [{ message }] + errors: [{ message }], }, { code: 'new Promise(yes => {})', - errors: [{ message }] + errors: [{ message }], }, { code: 'new Promise((yes, no) => {})', - errors: [{ message }] - } - ] + errors: [{ message }], + }, + ], }) diff --git a/__tests__/prefer-await-to-callbacks.js b/__tests__/prefer-await-to-callbacks.js index 47e7550d..a8742a06 100644 --- a/__tests__/prefer-await-to-callbacks.js +++ b/__tests__/prefer-await-to-callbacks.js @@ -4,8 +4,8 @@ const rule = require('../rules/prefer-await-to-callbacks') const RuleTester = require('eslint').RuleTester const ruleTester = new RuleTester({ parserOptions: { - ecmaVersion: 8 - } + ecmaVersion: 8, + }, }) const message = 'Avoid callbacks. Prefer Async/Await.' @@ -16,41 +16,41 @@ ruleTester.run('prefer-await-to-callbacks', rule, { 'async function hi() { await thing().then() }', 'async function hi() { await thing().catch() }', 'dbConn.on("error", err => { console.error(err) })', - 'dbConn.once("error", err => { console.error(err) })' + 'dbConn.once("error", err => { console.error(err) })', ], invalid: [ { code: 'heart(function(err) {})', - errors: [{ message }] + errors: [{ message }], }, { code: 'heart(err => {})', - errors: [{ message }] + errors: [{ message }], }, { code: 'heart("ball", function(err) {})', - errors: [{ message }] + errors: [{ message }], }, { code: 'function getData(id, callback) {}', - errors: [{ message }] + errors: [{ message }], }, { code: 'const getData = (cb) => {}', - errors: [{ message }] + errors: [{ message }], }, { code: 'var x = function (x, cb) {}', - errors: [{ message }] + errors: [{ message }], }, { code: 'cb()', - errors: [{ message }] + errors: [{ message }], }, { code: 'callback()', - errors: [{ message }] - } - ] + errors: [{ message }], + }, + ], }) diff --git a/__tests__/prefer-await-to-then.js b/__tests__/prefer-await-to-then.js index bc4d8fbe..18c4e073 100644 --- a/__tests__/prefer-await-to-then.js +++ b/__tests__/prefer-await-to-then.js @@ -4,8 +4,8 @@ const rule = require('../rules/prefer-await-to-then') const RuleTester = require('eslint').RuleTester const ruleTester = new RuleTester({ parserOptions: { - ecmaVersion: 8 - } + ecmaVersion: 8, + }, }) const message = 'Prefer await to then()/catch()/finally().' @@ -16,35 +16,37 @@ ruleTester.run('prefer-await-to-then', rule, { 'async function hi() { await thing().then() }', 'async function hi() { await thing().catch() }', 'a = async () => (await something())', - 'a = async () => (try { await something() } catch { somethingElse() })', - 'something().then(async () => await somethingElse())' + `a = async () => { + try { await something() } catch (error) { somethingElse() } + }`, + 'something().then(async () => await somethingElse())', ], invalid: [ { code: 'function foo() { hey.then(x => {}) }', - errors: [{ message }] + errors: [{ message }], }, { code: 'function foo() { hey.then(function() { }).then() }', - errors: [{ message }, { message }] + errors: [{ message }, { message }], }, { code: 'function foo() { hey.then(function() { }).then(x).catch() }', - errors: [{ message }, { message }] + errors: [{ message }, { message }, { message }], }, { code: 'async function a() { hey.then(function() { }).then(function() { }) }', - errors: [{ message }, { message }] + errors: [{ message }, { message }], }, { code: 'function foo() { hey.catch(x => {}) }', - errors: [{ message }] + errors: [{ message }], }, { code: 'function foo() { hey.finally(x => {}) }', - errors: [{ message }] - } - ] + errors: [{ message }], + }, + ], }) diff --git a/__tests__/valid-params.js b/__tests__/valid-params.js index 0b2fe95a..88b406cf 100644 --- a/__tests__/valid-params.js +++ b/__tests__/valid-params.js @@ -4,8 +4,8 @@ const rule = require('../rules/valid-params') const RuleTester = require('eslint').RuleTester const ruleTester = new RuleTester({ parserOptions: { - ecmaVersion: 6 - } + ecmaVersion: 6, + }, }) ruleTester.run('valid-params', rule, { @@ -60,8 +60,8 @@ ruleTester.run('valid-params', rule, { '])', ' .then(console.log)', ' .catch(console.error)', - ' .finally(console.log)' - ].join('\n') + ' .finally(console.log)', + ].join('\n'), ], invalid: [ // invalid Promise.resolve() @@ -69,17 +69,19 @@ ruleTester.run('valid-params', rule, { code: 'Promise.resolve(1, 2)', errors: [ { - message: 'Promise.resolve() requires 0 or 1 arguments, but received 2' - } - ] + message: + 'Promise.resolve() requires 0 or 1 arguments, but received 2', + }, + ], }, { code: 'Promise.resolve({}, function() {}, 1, 2, 3)', errors: [ { - message: 'Promise.resolve() requires 0 or 1 arguments, but received 5' - } - ] + message: + 'Promise.resolve() requires 0 or 1 arguments, but received 5', + }, + ], }, // invalid Promise.reject() @@ -87,119 +89,123 @@ ruleTester.run('valid-params', rule, { code: 'Promise.reject(1, 2, 3)', errors: [ { - message: 'Promise.reject() requires 0 or 1 arguments, but received 3' - } - ] + message: 'Promise.reject() requires 0 or 1 arguments, but received 3', + }, + ], }, { code: 'Promise.reject({}, function() {}, 1, 2)', errors: [ { - message: 'Promise.reject() requires 0 or 1 arguments, but received 4' - } - ] + message: 'Promise.reject() requires 0 or 1 arguments, but received 4', + }, + ], }, // invalid Promise.race() { code: 'Promise.race(1, 2)', errors: [ - { message: 'Promise.race() requires 1 argument, but received 2' } - ] + { message: 'Promise.race() requires 1 argument, but received 2' }, + ], }, { code: 'Promise.race({}, function() {}, 1, 2, 3)', errors: [ - { message: 'Promise.race() requires 1 argument, but received 5' } - ] + { message: 'Promise.race() requires 1 argument, but received 5' }, + ], }, // invalid Promise.all() { code: 'Promise.all(1, 2, 3)', - errors: [{ message: 'Promise.all() requires 1 argument, but received 3' }] + errors: [ + { message: 'Promise.all() requires 1 argument, but received 3' }, + ], }, { code: 'Promise.all({}, function() {}, 1, 2)', - errors: [{ message: 'Promise.all() requires 1 argument, but received 4' }] + errors: [ + { message: 'Promise.all() requires 1 argument, but received 4' }, + ], }, // invalid Promise.then() { code: 'somePromise().then()', errors: [ - { message: 'Promise.then() requires 1 or 2 arguments, but received 0' } - ] + { message: 'Promise.then() requires 1 or 2 arguments, but received 0' }, + ], }, { code: 'somePromise().then(() => {}, () => {}, () => {})', errors: [ - { message: 'Promise.then() requires 1 or 2 arguments, but received 3' } - ] + { message: 'Promise.then() requires 1 or 2 arguments, but received 3' }, + ], }, { code: 'promiseReference.then()', errors: [ - { message: 'Promise.then() requires 1 or 2 arguments, but received 0' } - ] + { message: 'Promise.then() requires 1 or 2 arguments, but received 0' }, + ], }, { code: 'promiseReference.then(() => {}, () => {}, () => {})', errors: [ - { message: 'Promise.then() requires 1 or 2 arguments, but received 3' } - ] + { message: 'Promise.then() requires 1 or 2 arguments, but received 3' }, + ], }, // invalid Promise.catch() { code: 'somePromise().catch()', errors: [ - { message: 'Promise.catch() requires 1 argument, but received 0' } - ] + { message: 'Promise.catch() requires 1 argument, but received 0' }, + ], }, { code: 'somePromise().catch(() => {}, () => {})', errors: [ - { message: 'Promise.catch() requires 1 argument, but received 2' } - ] + { message: 'Promise.catch() requires 1 argument, but received 2' }, + ], }, { code: 'promiseReference.catch()', errors: [ - { message: 'Promise.catch() requires 1 argument, but received 0' } - ] + { message: 'Promise.catch() requires 1 argument, but received 0' }, + ], }, { code: 'promiseReference.catch(() => {}, () => {})', errors: [ - { message: 'Promise.catch() requires 1 argument, but received 2' } - ] + { message: 'Promise.catch() requires 1 argument, but received 2' }, + ], }, // invalid Promise.finally() { code: 'somePromise().finally()', errors: [ - { message: 'Promise.finally() requires 1 argument, but received 0' } - ] + { message: 'Promise.finally() requires 1 argument, but received 0' }, + ], }, { code: 'somePromise().finally(() => {}, () => {})', errors: [ - { message: 'Promise.finally() requires 1 argument, but received 2' } - ] + { message: 'Promise.finally() requires 1 argument, but received 2' }, + ], }, { code: 'promiseReference.finally()', errors: [ - { message: 'Promise.finally() requires 1 argument, but received 0' } - ] + { message: 'Promise.finally() requires 1 argument, but received 0' }, + ], }, { code: 'promiseReference.finally(() => {}, () => {})', errors: [ - { message: 'Promise.finally() requires 1 argument, but received 2' } - ] - } - ] + { message: 'Promise.finally() requires 1 argument, but received 2' }, + ], + }, + ], }) diff --git a/index.js b/index.js index 6be65b45..08008d29 100644 --- a/index.js +++ b/index.js @@ -15,14 +15,14 @@ module.exports = { 'avoid-new': require('./rules/avoid-new'), 'no-new-statics': require('./rules/no-new-statics'), 'no-return-in-finally': require('./rules/no-return-in-finally'), - 'valid-params': require('./rules/valid-params') + 'valid-params': require('./rules/valid-params'), }, rulesConfig: { 'param-names': 1, 'always-return': 1, 'no-return-wrap': 1, 'no-native': 0, - 'catch-or-return': 1 + 'catch-or-return': 1, }, configs: { recommended: { @@ -39,8 +39,8 @@ module.exports = { 'promise/avoid-new': 'off', 'promise/no-new-statics': 'error', 'promise/no-return-in-finally': 'warn', - 'promise/valid-params': 'warn' - } - } - } + 'promise/valid-params': 'warn', + }, + }, + }, } diff --git a/package-lock.json b/package-lock.json index 3f5618be..8cd1c256 100644 --- a/package-lock.json +++ b/package-lock.json @@ -309,6 +309,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/runtime": { + "version": "7.9.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz", + "integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, "@babel/template": { "version": "7.8.6", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", @@ -563,6 +572,15 @@ "glob": "^7.1.3" } }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -1117,9 +1135,9 @@ "dev": true }, "acorn": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz", - "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", "dev": true }, "acorn-globals": { @@ -1155,9 +1173,9 @@ } }, "ajv": { - "version": "6.12.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", - "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -1720,6 +1738,11 @@ "string-width": "^4.2.0" }, "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, "ansi-styles": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", @@ -1751,6 +1774,11 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=" + }, "slice-ansi": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", @@ -1760,6 +1788,14 @@ "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", "is-fullwidth-code-point": "^3.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + } } } } @@ -1779,6 +1815,17 @@ "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } } }, "clone": { @@ -1936,14 +1983,45 @@ } }, "cross-spawn": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", - "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "shebang-command": { + "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" + } + }, + "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 + } } }, "cssom": { @@ -2142,9 +2220,9 @@ "dev": true }, "entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.2.tgz", - "integrity": "sha512-dmD3AvJQBUjKpcNkoqr+x+IF0SdRtPz9Vk0uTy4yWqga9ibB6s4v++QFWNohjiUGoMlF552ZvNyXDxz5iW0qmw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", + "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==", "dev": true } } @@ -2263,47 +2341,6 @@ "esutils": "^2.0.2", "optionator": "^0.8.1", "source-map": "~0.6.1" - }, - "dependencies": { - "levn": { - "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" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "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 - }, - "type-check": { - "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" - } - } } }, "eslint": { @@ -2351,33 +2388,6 @@ "v8-compile-cache": "^2.0.3" }, "dependencies": { - "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 - }, - "cross-spawn": { - "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", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -2392,61 +2402,22 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "shebang-command": { - "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" - } - }, - "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 - }, - "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, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "which": { - "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" - } } } }, "eslint-config-prettier": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-3.0.1.tgz", - "integrity": "sha512-vA0TB8HCx/idHXfKHYcg9J98p0Q8nkfNwNAoP7e+ywUidn6ScaFS5iqncZAHPz+/a0A/tp657ulFHFx/2JDP4Q==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz", + "integrity": "sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA==", "dev": true, "requires": { "get-stdin": "^6.0.0" } }, "eslint-plugin-es": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", - "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.0.tgz", + "integrity": "sha512-6/Jb/J/ZvSebydwbBJO1R9E5ky7YeElfK56Veh7e4QGFHCXoIXGH9HhVz+ibJLM3XJ1XjP+T7rKBLUa/Y7eIng==", "dev": true, "requires": { "eslint-utils": "^2.0.0", @@ -2517,13 +2488,12 @@ } }, "eslint-plugin-prettier": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-2.6.2.tgz", - "integrity": "sha512-tGek5clmW5swrAx1mdPYM8oThrBE83ePh7LeseZHBWfHVGrHPhKn7Y5zgRMbU/9D5Td9K4CEmUPjGxA7iw98Og==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.3.tgz", + "integrity": "sha512-+HG5jmu/dN3ZV3T6eCD7a4BlAySdN7mLIbJYo0z1cFQuI+r2DiTJEFeF68ots93PsnrMxbzIZ2S/ieX+mkrBeQ==", "dev": true, "requires": { - "fast-diff": "^1.1.1", - "jest-docblock": "^21.0.0" + "prettier-linter-helpers": "^1.0.0" } }, "eslint-scope": { @@ -2569,18 +2539,18 @@ "dev": true }, "esquery": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", - "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.2.0.tgz", + "integrity": "sha512-weltsSqdeWIX9G2qQZz7KlTRJdkkOCTPgLYJUz1Hacf48R4YOwGPHO3+ORfWedqJKbq5WQmsgK90n+pFLIKt/Q==", "dev": true, "requires": { - "estraverse": "^5.1.0" + "estraverse": "^5.0.0" }, "dependencies": { "estraverse": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", - "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.0.0.tgz", + "integrity": "sha512-j3acdrMzqrxmJTNj5dbr1YbjacrYgAxVMeF0gK16E3j494mOe7xygM/ZLIguEQ0ETwAg2hlJCtHRGav+y0Ny5A==", "dev": true } } @@ -2625,57 +2595,6 @@ "p-finally": "^1.0.0", "signal-exit": "^3.0.0", "strip-eof": "^1.0.0" - }, - "dependencies": { - "cross-spawn": { - "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", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "shebang-command": { - "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" - } - }, - "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 - }, - "which": { - "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" - } - } } }, "exit": { @@ -2876,9 +2795,9 @@ "dev": true }, "fast-diff": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", - "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", "dev": true }, "fast-json-stable-stringify": { @@ -3445,6 +3364,15 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -3649,6 +3577,12 @@ "integrity": "sha1-DFLlS8yjkbssSUsh6GJtczbG45c=", "dev": true }, + "is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, "is-regexp": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", @@ -3898,6 +3832,17 @@ "throat": "^5.0.0" }, "dependencies": { + "cross-spawn": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", + "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, "execa": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/execa/-/execa-4.0.1.tgz", @@ -3938,6 +3883,15 @@ "requires": { "path-key": "^3.0.0" } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } } } }, @@ -4084,10 +4038,13 @@ } }, "jest-docblock": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-21.2.0.tgz", - "integrity": "sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw==", - "dev": true + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", + "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", + "dev": true, + "requires": { + "detect-newline": "^3.0.0" + } }, "jest-each": { "version": "26.0.1", @@ -4206,6 +4163,17 @@ "sane": "^4.0.3", "walker": "^1.0.7", "which": "^2.0.2" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } } }, "jest-jasmine2": { @@ -4505,6 +4473,15 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -4595,15 +4572,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "jest-docblock": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", - "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", - "dev": true, - "requires": { - "detect-newline": "^3.0.0" - } - }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -4627,12 +4595,6 @@ "eslint": "^4.0.0 || ^5.0.0 || ^6.0.0" }, "dependencies": { - "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 - }, "cosmiconfig": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", @@ -4645,119 +4607,6 @@ "parse-json": "^4.0.0" } }, - "cross-spawn": { - "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", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "eslint": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", - "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", - "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.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "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", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.3", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "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 - } - } - }, - "eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "espree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - } - }, "import-fresh": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", @@ -4768,36 +4617,6 @@ "resolve-from": "^3.0.0" } }, - "levn": { - "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" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, "parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", @@ -4808,71 +4627,11 @@ "json-parse-better-errors": "^1.0.1" } }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "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 - }, - "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 - }, "resolve-from": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", "dev": true - }, - "shebang-command": { - "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" - } - }, - "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 - }, - "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, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "type-check": { - "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" - } - }, - "which": { - "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" - } } } }, @@ -5558,27 +5317,6 @@ "path-key": "^3.0.0" } }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, "supports-color": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", @@ -6014,6 +5752,23 @@ "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true, "optional": true + }, + "uuid": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", + "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==", + "dev": true, + "optional": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "optional": true, + "requires": { + "isexe": "^2.0.0" + } } } }, @@ -6348,11 +6103,20 @@ "dev": true }, "prettier": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.14.2.tgz", - "integrity": "sha512-McHPg0n1pIke+A/4VcaS2en+pTNjy4xF+Uuq86u/5dyDO59/TtFZtQ708QIRkEZ3qwKz3GVkVa6mpxK/CpB8Rg==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz", + "integrity": "sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==", "dev": true }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, "pretty-format": { "version": "26.0.1", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.0.1.tgz", @@ -6494,6 +6258,12 @@ "util-deprecate": "~1.0.1" } }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "dev": true + }, "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", @@ -6604,12 +6374,6 @@ "psl": "^1.1.28", "punycode": "^2.1.1" } - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true } } }, @@ -6658,9 +6422,9 @@ "dev": true }, "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", "dev": true, "requires": { "path-parse": "^1.0.6" @@ -6727,10 +6491,13 @@ "dev": true }, "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz", + "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==", + "dev": true, + "requires": { + "is-promise": "^2.1.0" + } }, "rxjs": { "version": "6.5.5", @@ -7294,6 +7061,17 @@ "requires": { "char-regex": "^1.0.2", "strip-ansi": "^6.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } } }, "string-width": { @@ -7345,12 +7123,20 @@ } }, "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "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": "^5.0.0" + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "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 + } } }, "strip-bom": { @@ -7440,12 +7226,6 @@ "string-width": "^3.0.0" }, "dependencies": { - "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 - }, "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", @@ -7468,15 +7248,6 @@ "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^5.1.0" } - }, - "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, - "requires": { - "ansi-regex": "^4.1.0" - } } } }, @@ -7626,9 +7397,9 @@ "dev": true }, "tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", "dev": true }, "tsutils": { @@ -7840,11 +7611,10 @@ "dev": true }, "uuid": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", - "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==", - "dev": true, - "optional": true + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true }, "v8-compile-cache": { "version": "2.1.0", @@ -7996,9 +7766,9 @@ } }, "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "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" @@ -8133,10 +7903,13 @@ "dev": true }, "yaml": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", - "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", - "dev": true + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.8.3.tgz", + "integrity": "sha512-X/v7VDnK+sxbQ2Imq4Jt2PRUsRsP7UcpSl3Llg6+NRRqWLIvxkMFYtH1FmvwNGYRKKPa+EPA4qDBlI9WVG1UKw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.7" + } }, "yargs": { "version": "15.3.1", diff --git a/package.json b/package.json index c70d13b2..e0d27986 100644 --- a/package.json +++ b/package.json @@ -25,16 +25,16 @@ "devDependencies": { "doctoc": "^1.4.0", "eslint": "^6.8.0", - "eslint-config-prettier": "^3.0.1", + "eslint-config-prettier": "^6.11.0", "eslint-plugin-eslint-plugin": "^2.2.1", "eslint-plugin-jest": "^23.13.1", "eslint-plugin-node": "^11.1.0", - "eslint-plugin-prettier": "^2.6.2", + "eslint-plugin-prettier": "^3.1.3", "husky": "^4.2.5", "jest": "^26.0.1", "jest-runner-eslint": "^0.8.0", "lint-staged": "^10.2.4", - "prettier": "^1.14.2" + "prettier": "^2.0.5" }, "engines": { "node": ">=6" diff --git a/rules/always-return.js b/rules/always-return.js index 5196d1a1..2d0606e9 100644 --- a/rules/always-return.js +++ b/rules/always-return.js @@ -58,8 +58,8 @@ module.exports = { meta: { type: 'problem', docs: { - url: getDocsUrl('always-return') - } + url: getDocsUrl('always-return'), + }, }, create(context) { // funcInfoStack is a stack representing the stack of currently executing @@ -120,7 +120,7 @@ module.exports = { onCodePathStart() { funcInfoStack.push({ branchIDStack: [], - branchInfoMap: {} + branchInfoMap: {}, }) }, @@ -131,7 +131,7 @@ module.exports = { return } - path.finalSegments.forEach(segment => { + path.finalSegments.forEach((segment) => { const id = segment.id const branch = funcInfo.branchInfoMap[id] if (!branch.good) { @@ -148,11 +148,11 @@ module.exports = { context.report({ message: 'Each then() should return a value or throw', - node: branch.node + node: branch.node, }) } }) - } + }, } - } + }, } diff --git a/rules/avoid-new.js b/rules/avoid-new.js index 1d61f418..e6032f75 100644 --- a/rules/avoid-new.js +++ b/rules/avoid-new.js @@ -11,8 +11,8 @@ module.exports = { meta: { type: 'suggestion', docs: { - url: getDocsUrl('avoid-new') - } + url: getDocsUrl('avoid-new'), + }, }, create(context) { return { @@ -20,7 +20,7 @@ module.exports = { if (node.callee.name === 'Promise') { context.report({ node, message: 'Avoid creating new promises.' }) } - } + }, } - } + }, } diff --git a/rules/catch-or-return.js b/rules/catch-or-return.js index 4d60a4fa..ba2d6677 100644 --- a/rules/catch-or-return.js +++ b/rules/catch-or-return.js @@ -13,11 +13,11 @@ module.exports = { meta: { type: 'problem', docs: { - url: getDocsUrl('catch-or-return') + url: getDocsUrl('catch-or-return'), }, messages: { - terminationMethod: 'Expected {{ terminationMethod }}() or return' - } + terminationMethod: 'Expected {{ terminationMethod }}() or return', + }, }, create(context) { const options = context.options[0] || {} @@ -88,9 +88,9 @@ module.exports = { context.report({ node, messageId: 'terminationMethod', - data: { terminationMethod } + data: { terminationMethod }, }) - } + }, } - } + }, } diff --git a/rules/lib/is-named-callback.js b/rules/lib/is-named-callback.js index 6b74e55e..59df4fe8 100644 --- a/rules/lib/is-named-callback.js +++ b/rules/lib/is-named-callback.js @@ -4,11 +4,11 @@ let callbacks = ['done', 'cb', 'callback', 'next'] module.exports = function isNamedCallback(potentialCallbackName, exceptions) { for (let i = 0; i < exceptions.length; i++) { - callbacks = callbacks.filter(item => { + callbacks = callbacks.filter((item) => { return item !== exceptions[i] }) } - return callbacks.some(trueCallbackName => { + return callbacks.some((trueCallbackName) => { return potentialCallbackName === trueCallbackName }) } diff --git a/rules/lib/promise-statics.js b/rules/lib/promise-statics.js index e5a877bd..8186ddd1 100644 --- a/rules/lib/promise-statics.js +++ b/rules/lib/promise-statics.js @@ -4,5 +4,5 @@ module.exports = { all: true, race: true, reject: true, - resolve: true + resolve: true, } diff --git a/rules/no-callback-in-promise.js b/rules/no-callback-in-promise.js index eff5c327..5e58f245 100644 --- a/rules/no-callback-in-promise.js +++ b/rules/no-callback-in-promise.js @@ -14,11 +14,11 @@ module.exports = { meta: { type: 'suggestion', docs: { - url: getDocsUrl('no-callback-in-promise') + url: getDocsUrl('no-callback-in-promise'), }, messages: { - callback: 'Avoid calling back inside of a promise.' - } + callback: 'Avoid calling back inside of a promise.', + }, }, create(context) { return { @@ -39,7 +39,7 @@ module.exports = { ) { context.report({ node: node.arguments[0], - messageId: 'callback' + messageId: 'callback', }) } } @@ -48,10 +48,10 @@ module.exports = { if (context.getAncestors().some(isInsidePromise)) { context.report({ node, - messageId: 'callback' + messageId: 'callback', }) } - } + }, } - } + }, } diff --git a/rules/no-native.js b/rules/no-native.js index 37c16e77..8503231e 100644 --- a/rules/no-native.js +++ b/rules/no-native.js @@ -6,7 +6,7 @@ const getDocsUrl = require('./lib/get-docs-url') function isDeclared(scope, ref) { - return scope.variables.some(variable => { + return scope.variables.some((variable) => { if (variable.name !== ref.identifier.name) { return false } @@ -23,11 +23,11 @@ module.exports = { meta: { type: 'suggestion', docs: { - url: getDocsUrl('no-native') + url: getDocsUrl('no-native'), }, messages: { - name: '"{{name}}" is not defined.' - } + name: '"{{name}}" is not defined.', + }, }, create(context) { /** @@ -41,7 +41,7 @@ module.exports = { 'Program:exit'() { const scope = context.getScope() - scope.implicit.left.forEach(ref => { + scope.implicit.left.forEach((ref) => { if (ref.identifier.name !== 'Promise') { return } @@ -50,11 +50,11 @@ module.exports = { context.report({ node: ref.identifier, messageId: 'name', - data: { name: ref.identifier.name } + data: { name: ref.identifier.name }, }) } }) - } + }, } - } + }, } diff --git a/rules/no-nesting.js b/rules/no-nesting.js index 12112d8c..98a1750b 100644 --- a/rules/no-nesting.js +++ b/rules/no-nesting.js @@ -13,8 +13,8 @@ module.exports = { meta: { type: 'suggestion', docs: { - url: getDocsUrl('no-nesting') - } + url: getDocsUrl('no-nesting'), + }, }, create(context) { return { @@ -23,7 +23,7 @@ module.exports = { if (context.getAncestors().some(isInsidePromise)) { context.report({ node, message: 'Avoid nesting promises.' }) } - } + }, } - } + }, } diff --git a/rules/no-new-statics.js b/rules/no-new-statics.js index 6580f0d3..16630811 100644 --- a/rules/no-new-statics.js +++ b/rules/no-new-statics.js @@ -7,9 +7,9 @@ module.exports = { meta: { type: 'problem', docs: { - url: getDocsUrl('no-new-statics') + url: getDocsUrl('no-new-statics'), }, - fixable: 'code' + fixable: 'code', }, create(context) { return { @@ -28,10 +28,10 @@ module.exports = { [node.start, node.start + 'new '.length], '' ) - } + }, }) } - } + }, } - } + }, } diff --git a/rules/no-promise-in-callback.js b/rules/no-promise-in-callback.js index 98af432f..01674236 100644 --- a/rules/no-promise-in-callback.js +++ b/rules/no-promise-in-callback.js @@ -13,8 +13,8 @@ module.exports = { meta: { type: 'suggestion', docs: { - url: getDocsUrl('no-promise-in-callback') - } + url: getDocsUrl('no-promise-in-callback'), + }, }, create(context) { return { @@ -31,10 +31,10 @@ module.exports = { if (context.getAncestors().some(isInsideCallback)) { context.report({ node: node.callee, - message: 'Avoid using promises inside of callbacks.' + message: 'Avoid using promises inside of callbacks.', }) } - } + }, } - } + }, } diff --git a/rules/no-return-in-finally.js b/rules/no-return-in-finally.js index d3eaa183..bf80ce1c 100644 --- a/rules/no-return-in-finally.js +++ b/rules/no-return-in-finally.js @@ -7,8 +7,8 @@ module.exports = { meta: { type: 'problem', docs: { - url: getDocsUrl('no-return-in-finally') - } + url: getDocsUrl('no-return-in-finally'), + }, }, create(context) { return { @@ -26,19 +26,19 @@ module.exports = { node.arguments[0].body.body ) { if ( - node.arguments[0].body.body.some(statement => { + node.arguments[0].body.body.some((statement) => { return statement.type === 'ReturnStatement' }) ) { context.report({ node: node.callee.property, - message: 'No return in finally' + message: 'No return in finally', }) } } } } - } + }, } - } + }, } diff --git a/rules/no-return-wrap.js b/rules/no-return-wrap.js index 57118c40..1e3af65a 100644 --- a/rules/no-return-wrap.js +++ b/rules/no-return-wrap.js @@ -12,7 +12,7 @@ const isPromise = require('./lib/is-promise') function isInPromise(context) { let functionNode = context .getAncestors() - .filter(node => { + .filter((node) => { return ( node.type === 'ArrowFunctionExpression' || node.type === 'FunctionExpression' @@ -39,12 +39,12 @@ module.exports = { meta: { type: 'suggestion', docs: { - url: getDocsUrl('no-return-wrap') + url: getDocsUrl('no-return-wrap'), }, messages: { resolve: 'Avoid wrapping return values in Promise.resolve', - reject: 'Expected throw instead of Promise.reject' - } + reject: 'Expected throw instead of Promise.reject', + }, }, create(context) { const options = context.options[0] || {} @@ -77,7 +77,7 @@ module.exports = { }, 'ArrowFunctionExpression > CallExpression'(node) { checkCallExpression(node, node) - } + }, } - } + }, } diff --git a/rules/param-names.js b/rules/param-names.js index 8cb50e4c..fdf1b73b 100644 --- a/rules/param-names.js +++ b/rules/param-names.js @@ -6,8 +6,8 @@ module.exports = { meta: { type: 'suggestion', docs: { - url: getDocsUrl('param-names') - } + url: getDocsUrl('param-names'), + }, }, create(context) { return { @@ -26,11 +26,11 @@ module.exports = { context.report({ node, message: - 'Promise constructor parameters must be named resolve, reject' + 'Promise constructor parameters must be named resolve, reject', }) } } - } + }, } - } + }, } diff --git a/rules/prefer-await-to-callbacks.js b/rules/prefer-await-to-callbacks.js index 792556aa..0db12d6d 100644 --- a/rules/prefer-await-to-callbacks.js +++ b/rules/prefer-await-to-callbacks.js @@ -6,11 +6,11 @@ module.exports = { meta: { type: 'suggestion', docs: { - url: getDocsUrl('prefer-await-to-callbacks') + url: getDocsUrl('prefer-await-to-callbacks'), }, messages: { - error: 'Avoid callbacks. Prefer Async/Await.' - } + error: 'Avoid callbacks. Prefer Async/Await.', + }, }, create(context) { function checkLastParamsForCallback(node) { @@ -20,7 +20,7 @@ module.exports = { } } function isInsideYieldOrAwait() { - return context.getAncestors().some(parent => { + return context.getAncestors().some((parent) => { return ( parent.type === 'AwaitExpression' || parent.type === 'YieldExpression' ) @@ -59,7 +59,7 @@ module.exports = { }, FunctionDeclaration: checkLastParamsForCallback, FunctionExpression: checkLastParamsForCallback, - ArrowFunctionExpression: checkLastParamsForCallback + ArrowFunctionExpression: checkLastParamsForCallback, } - } + }, } diff --git a/rules/prefer-await-to-then.js b/rules/prefer-await-to-then.js index 852b3665..bb6e0c4b 100644 --- a/rules/prefer-await-to-then.js +++ b/rules/prefer-await-to-then.js @@ -11,13 +11,13 @@ module.exports = { meta: { type: 'suggestion', docs: { - url: getDocsUrl('prefer-await-to-then') - } + url: getDocsUrl('prefer-await-to-then'), + }, }, create(context) { /** Returns true if node is inside yield or await expression. */ function isInsideYieldOrAwait() { - return context.getAncestors().some(parent => { + return context.getAncestors().some((parent) => { return ( parent.type === 'AwaitExpression' || parent.type === 'YieldExpression' ) @@ -40,13 +40,18 @@ module.exports = { } // if you're a then/catch/finally expression then you're probably a promise - if (node.property && (node.property.name === 'then' || node.property.name === 'catch' || node.property.name === 'finally')) { + if ( + node.property && + (node.property.name === 'then' || + node.property.name === 'catch' || + node.property.name === 'finally') + ) { context.report({ node: node.property, - message: 'Prefer await to then()/catch()/finally().' + message: 'Prefer await to then()/catch()/finally().', }) } - } + }, } - } + }, } diff --git a/rules/valid-params.js b/rules/valid-params.js index 698a0fab..c5ae1219 100644 --- a/rules/valid-params.js +++ b/rules/valid-params.js @@ -9,8 +9,8 @@ module.exports = { docs: { description: 'Ensures the proper number of arguments are passed to Promise functions', - url: getDocsUrl('valid-params') - } + url: getDocsUrl('valid-params'), + }, }, create(context) { return { @@ -30,7 +30,7 @@ module.exports = { node, message: 'Promise.{{ name }}() requires 0 or 1 arguments, but received {{ numArgs }}', - data: { name, numArgs } + data: { name, numArgs }, }) } break @@ -40,7 +40,7 @@ module.exports = { node, message: 'Promise.{{ name }}() requires 1 or 2 arguments, but received {{ numArgs }}', - data: { name, numArgs } + data: { name, numArgs }, }) } break @@ -53,14 +53,14 @@ module.exports = { node, message: 'Promise.{{ name }}() requires 1 argument, but received {{ numArgs }}', - data: { name, numArgs } + data: { name, numArgs }, }) } break default: break } - } + }, } - } + }, }