You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.2 KiB
40 lines
1.2 KiB
/** |
|
* @author Toru Nagashima |
|
* See LICENSE file in root directory for full license. |
|
*/ |
|
"use strict" |
|
|
|
const exists = require("./exists") |
|
const getAllowModules = require("./get-allow-modules") |
|
|
|
/** |
|
* 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, |
|
}) |
|
} |
|
} |
|
}
|
|
|