/** * @fileoverview Rule to check whether or not `require()` is valid. * @author Toru Nagashima * @copyright 2015 Toru Nagashima. All rights reserved. * See LICENSE file in root directory for full license. */ "use strict" //------------------------------------------------------------------------------ // Requirements //------------------------------------------------------------------------------ const exists = require("./exists") const getAllowModules = require("./get-allow-modules") //------------------------------------------------------------------------------ // Public Interface //------------------------------------------------------------------------------ /** * Checks whether or not each requirement target exists. * * It looks up the target according to the logic of Node.js. * See Also: https://nodejs.org/api/modules.html * * @param {RuleContext} context - A context to report. * @param {ImportTarget[]} targets - A list of target information to check. * @returns {void} */ module.exports = function checkForExistence(context, targets) { const allowed = new Set(getAllowModules(context)) for (const target of targets) { const missingModule = ( target.moduleName != null && !allowed.has(target.moduleName) && target.filePath == null ) const missingFile = ( target.moduleName == null && !exists(target.filePath) ) if (missingModule || missingFile) { context.report({ node: target.node, loc: target.node.loc, message: "\"{{name}}\" is not found.", data: target, }) } } }