Files
NapCatQQ/.pnpm-store/v3/files/37/295baf830857ef7fe846fbfc0234e382bb2bf550ff8c52dd3e41c33c06e98f12ddf391fff090845cde3eff3c25df3067371c2d3003bec620963f9dfd49ba1f
TanTan e311ca3275
Build NapCat Artifacts / Type Check & Test (push) Waiting to run
docs: 仓库链接指向本镜像仓库
2026-11-13 09:25:58 +08:00

59 lines
1.8 KiB
Plaintext

/**
* @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 {import('eslint').Rule.RuleContext} context - A context to report.
* @param {string} filePath - The current file path.
* @param {import('./import-target.js')[]} targets - A list of target information to check.
* @returns {void}
*/
exports.checkExtraneous = function checkExtraneous(context, filePath, targets) {
const packageInfo = getPackageJson(filePath)
if (!packageInfo) {
return
}
const allowed = new Set(getAllowModules(context))
const dependencies = new Set(
[packageInfo.name].concat(
Object.keys(packageInfo.dependencies || {}),
Object.keys(packageInfo.devDependencies || {}),
Object.keys(packageInfo.peerDependencies || {}),
Object.keys(packageInfo.optionalDependencies || {})
)
)
for (const target of targets) {
if (
target.moduleName != null &&
target.filePath != null &&
!dependencies.has(target.moduleName) &&
!allowed.has(target.moduleName) &&
// https://github.com/eslint-community/eslint-plugin-n/issues/379
!target.hasTSAlias()
) {
context.report({
node: target.node,
messageId: "extraneous",
data: {
moduleName: target.moduleName,
},
})
}
}
}
exports.messages = {
extraneous: '"{{moduleName}}" is extraneous.',
}