From 8f14ddafbf7c5e7d021342b7d10ee45a2ae2a1c7 Mon Sep 17 00:00:00 2001 From: Will Binns-Smith Date: Mon, 4 Mar 2019 20:00:55 -0800 Subject: [PATCH] eslint: enable no-return-await (#2707) This sets violations of the `no-return-await` to `error`. `return await` is redundant as values returned from an async function are effectively wrapped in a `Promise.resolve`, and awaiting another promise in addition to this will defer resolution another microtick. [eslint is good enough to detect the valid use case of `return await` in a `try`/`catch`](https://eslint.org/docs/rules/no-return-await). We also get clever with a short circuiting `||` in `Resolver` so I disabled it there, but we should probably rewrite it to be clearer in the future. Test Plan: `yarn && yarn lint && yarn test` --- packages/core/parcel-bundler/src/Resolver.js | 2 +- .../core/parcel-bundler/src/transforms/babel/babelrc.js | 2 +- packages/core/parcel-bundler/src/utils/loadPlugins.js | 6 ++---- packages/dev/eslint-config/index.js | 3 ++- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/packages/core/parcel-bundler/src/Resolver.js b/packages/core/parcel-bundler/src/Resolver.js index 86e5a62563f..529f9aae96a 100755 --- a/packages/core/parcel-bundler/src/Resolver.js +++ b/packages/core/parcel-bundler/src/Resolver.js @@ -159,7 +159,7 @@ class Resolver { // First try as a file, then as a directory. return ( (await this.loadAsFile(filename, extensions, pkg)) || - (await this.loadDirectory(filename, extensions, pkg)) + (await this.loadDirectory(filename, extensions, pkg)) // eslint-disable-line no-return-await ); } diff --git a/packages/core/parcel-bundler/src/transforms/babel/babelrc.js b/packages/core/parcel-bundler/src/transforms/babel/babelrc.js index 906a55698d2..7dc101bffdf 100644 --- a/packages/core/parcel-bundler/src/transforms/babel/babelrc.js +++ b/packages/core/parcel-bundler/src/transforms/babel/babelrc.js @@ -53,7 +53,7 @@ async function getBabelRc(asset, isSource) { } // Otherwise, return the .babelrc if babelify was found - return babelify ? await findBabelRc(asset) : null; + return babelify ? findBabelRc(asset) : null; } // If this asset is not in node_modules, always use the .babelrc diff --git a/packages/core/parcel-bundler/src/utils/loadPlugins.js b/packages/core/parcel-bundler/src/utils/loadPlugins.js index a32fb673a3c..1f3775fc01e 100644 --- a/packages/core/parcel-bundler/src/utils/loadPlugins.js +++ b/packages/core/parcel-bundler/src/utils/loadPlugins.js @@ -3,13 +3,11 @@ const localRequire = require('./localRequire'); module.exports = async function loadPlugins(plugins, relative) { if (Array.isArray(plugins)) { return Promise.all( - plugins.map(async p => loadPlugin(p, relative)).filter(Boolean) + plugins.map(p => loadPlugin(p, relative)).filter(Boolean) ); } else if (typeof plugins === 'object') { let mapPlugins = await Promise.all( - Object.keys(plugins).map( - async p => await loadPlugin(p, relative, plugins[p]) - ) + Object.keys(plugins).map(p => loadPlugin(p, relative, plugins[p])) ); return mapPlugins.filter(Boolean); } else { diff --git a/packages/dev/eslint-config/index.js b/packages/dev/eslint-config/index.js index 4cc049af3a9..45e1b4687cd 100644 --- a/packages/dev/eslint-config/index.js +++ b/packages/dev/eslint-config/index.js @@ -20,6 +20,7 @@ module.exports = { 'import/first': 'error', 'import/newline-after-import': 'error', 'import/no-extraneous-dependencies': 'error', - 'import/no-self-import': 'error' + 'import/no-self-import': 'error', + 'no-return-await': 'error' } };