| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 | /** * @author Toru Nagashima * See LICENSE file in root directory for full license. */"use strict"const getAllowModules = require("./get-allow-modules")const getPackageJson = require("./get-package-json")/** * Checks whether or not each requirement target is published via package.json. * * It reads package.json and checks the target exists in `dependencies`. * * @param {RuleContext} context - A context to report. * @param {string} filePath - The current file path. * @param {ImportTarget[]} targets - A list of target information to check. * @returns {void} */module.exports = function checkForExtraneous(context, filePath, targets) {    const packageInfo = getPackageJson(filePath)    if (!packageInfo) {        return    }    const allowed = new Set(getAllowModules(context))    const dependencies = new Set(        [].concat(            Object.keys(packageInfo.dependencies || {}),            Object.keys(packageInfo.devDependencies || {}),            Object.keys(packageInfo.peerDependencies || {}),            Object.keys(packageInfo.optionalDependencies || {})        )    )    for (const target of targets) {        const extraneous =            target.moduleName != null &&            target.filePath != null &&            !dependencies.has(target.moduleName) &&            !allowed.has(target.moduleName)        if (extraneous) {            context.report({                node: target.node,                loc: target.node.loc,                message: '"{{moduleName}}" is extraneous.',                data: target,            })        }    }}
 |