Sha256: 6e171049f606cd324a4f3b37d801cd702848cb53723682f7ad1bd28e3913706c

Contents?: true

Size: 1.69 KB

Versions: 44

Compression:

Stored size: 1.69 KB

Contents

/**
 * @author Toru Nagashima
 * See LICENSE file in root directory for full license.
 */
"use strict"

const { ReferenceTracker } = require("eslint-utils")

/**
 * Verifier for `prefer-global/*` rules.
 */
class Verifier {
    /**
     * Initialize this instance.
     * @param {RuleContext} context The rule context to report.
     * @param {{modules:object,globals:object}} trackMap The track map.
     */
    constructor(context, trackMap) {
        this.context = context
        this.trackMap = trackMap
        this.verify =
            context.options[0] === "never"
                ? this.verifyToPreferModules
                : this.verifyToPreferGlobals
    }

    /**
     * Verify the code to suggest the use of globals.
     * @returns {void}
     */
    verifyToPreferGlobals() {
        const { context, trackMap } = this
        const tracker = new ReferenceTracker(context.getScope(), {
            mode: "legacy",
        })

        for (const { node } of [
            ...tracker.iterateCjsReferences(trackMap.modules),
            ...tracker.iterateEsmReferences(trackMap.modules),
        ]) {
            context.report({ node, messageId: "preferGlobal" })
        }
    }

    /**
     * Verify the code to suggest the use of modules.
     * @returns {void}
     */
    verifyToPreferModules() {
        const { context, trackMap } = this
        const tracker = new ReferenceTracker(context.getScope())

        for (const { node } of tracker.iterateGlobalReferences(
            trackMap.globals
        )) {
            context.report({ node, messageId: "preferModule" })
        }
    }
}

module.exports = function checkForPreferGlobal(context, trackMap) {
    new Verifier(context, trackMap).verify()
}

Version data entries

44 entries across 44 versions & 2 rubygems

Version Path
decidim-0.26.8 packages/eslint-config/node_modules/eslint-plugin-node/lib/util/check-prefer-global.js
govuk_publishing_components-18.0.0 node_modules/eslint-plugin-node/lib/util/check-prefer-global.js
govuk_publishing_components-17.21.0 node_modules/eslint-plugin-node/lib/util/check-prefer-global.js
govuk_publishing_components-17.20.0 node_modules/eslint-plugin-node/lib/util/check-prefer-global.js
govuk_publishing_components-17.19.1 node_modules/eslint-plugin-node/lib/util/check-prefer-global.js
govuk_publishing_components-17.19.0 node_modules/eslint-plugin-node/lib/util/check-prefer-global.js
govuk_publishing_components-17.18.0 node_modules/eslint-plugin-node/lib/util/check-prefer-global.js
govuk_publishing_components-17.17.0 node_modules/eslint-plugin-node/lib/util/check-prefer-global.js
govuk_publishing_components-17.16.0 node_modules/eslint-plugin-node/lib/util/check-prefer-global.js
govuk_publishing_components-17.15.0 node_modules/eslint-plugin-node/lib/util/check-prefer-global.js
govuk_publishing_components-17.14.0 node_modules/eslint-plugin-node/lib/util/check-prefer-global.js
govuk_publishing_components-17.13.0 node_modules/eslint-plugin-node/lib/util/check-prefer-global.js
govuk_publishing_components-17.12.2 node_modules/eslint-plugin-node/lib/util/check-prefer-global.js
govuk_publishing_components-17.12.1 node_modules/eslint-plugin-node/lib/util/check-prefer-global.js
govuk_publishing_components-17.12.0 node_modules/eslint-plugin-node/lib/util/check-prefer-global.js
govuk_publishing_components-17.11.0 node_modules/eslint-plugin-node/lib/util/check-prefer-global.js
govuk_publishing_components-17.10.0 node_modules/eslint-plugin-node/lib/util/check-prefer-global.js
govuk_publishing_components-17.9.0 node_modules/eslint-plugin-node/lib/util/check-prefer-global.js
govuk_publishing_components-17.8.0 node_modules/eslint-plugin-node/lib/util/check-prefer-global.js
govuk_publishing_components-17.7.0 node_modules/eslint-plugin-node/lib/util/check-prefer-global.js