Sha256: e5ab9450c5817d9dbb4604852b15fbc6c048cff105af9821e700da0fce4f74d8

Contents?: true

Size: 1.22 KB

Versions: 43

Compression:

Stored size: 1.22 KB

Contents

/**
 * Rule: prefer-await-to-then
 * Discourage using then() and instead use async/await.
 */

'use strict'

const getDocsUrl = require('./lib/get-docs-url')

module.exports = {
  meta: {
    docs: {
      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 (
          parent.type === 'AwaitExpression' || parent.type === 'YieldExpression'
        )
      })
    }

    /**
     * Returns true if node is created at the top-level scope.
     * Await statements are not allowed at the top level,
     * only within function declarations.
     */
    function isTopLevelScoped() {
      return context.getScope().block.type === 'Program'
    }

    return {
      MemberExpression(node) {
        if (isTopLevelScoped() || isInsideYieldOrAwait()) {
          return
        }

        // if you're a then expression then you're probably a promise
        if (node.property && node.property.name === 'then') {
          context.report({
            node: node.property,
            message: 'Prefer await to then().'
          })
        }
      }
    }
  }
}

Version data entries

43 entries across 43 versions & 1 rubygems

Version Path
govuk_publishing_components-18.0.0 node_modules/eslint-plugin-promise/rules/prefer-await-to-then.js
govuk_publishing_components-17.21.0 node_modules/eslint-plugin-promise/rules/prefer-await-to-then.js
govuk_publishing_components-17.20.0 node_modules/eslint-plugin-promise/rules/prefer-await-to-then.js
govuk_publishing_components-17.19.1 node_modules/eslint-plugin-promise/rules/prefer-await-to-then.js
govuk_publishing_components-17.19.0 node_modules/eslint-plugin-promise/rules/prefer-await-to-then.js
govuk_publishing_components-17.18.0 node_modules/eslint-plugin-promise/rules/prefer-await-to-then.js
govuk_publishing_components-17.17.0 node_modules/eslint-plugin-promise/rules/prefer-await-to-then.js
govuk_publishing_components-17.16.0 node_modules/eslint-plugin-promise/rules/prefer-await-to-then.js
govuk_publishing_components-17.15.0 node_modules/eslint-plugin-promise/rules/prefer-await-to-then.js
govuk_publishing_components-17.14.0 node_modules/eslint-plugin-promise/rules/prefer-await-to-then.js
govuk_publishing_components-17.13.0 node_modules/eslint-plugin-promise/rules/prefer-await-to-then.js
govuk_publishing_components-17.12.2 node_modules/eslint-plugin-promise/rules/prefer-await-to-then.js
govuk_publishing_components-17.12.1 node_modules/eslint-plugin-promise/rules/prefer-await-to-then.js
govuk_publishing_components-17.12.0 node_modules/eslint-plugin-promise/rules/prefer-await-to-then.js
govuk_publishing_components-17.11.0 node_modules/eslint-plugin-promise/rules/prefer-await-to-then.js
govuk_publishing_components-17.10.0 node_modules/eslint-plugin-promise/rules/prefer-await-to-then.js
govuk_publishing_components-17.9.0 node_modules/eslint-plugin-promise/rules/prefer-await-to-then.js
govuk_publishing_components-17.8.0 node_modules/eslint-plugin-promise/rules/prefer-await-to-then.js
govuk_publishing_components-17.7.0 node_modules/eslint-plugin-promise/rules/prefer-await-to-then.js
govuk_publishing_components-17.6.1 node_modules/eslint-plugin-promise/rules/prefer-await-to-then.js