41 lines
1.2 KiB
JavaScript
41 lines
1.2 KiB
JavaScript
/**
|
|
* @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,
|
|
})
|
|
}
|
|
}
|
|
}
|