mirror of
https://git.meshkee.com/cssd/cssd-back.git
synced 2026-10-11 03:01:08 +03:30
145 lines
4.2 KiB
JavaScript
Vendored
145 lines
4.2 KiB
JavaScript
Vendored
/**
|
|
* @author Toru Nagashima
|
|
* See LICENSE file in root directory for full license.
|
|
*
|
|
* @deprecated since v4.2.0
|
|
* This rule was based on an invalid assumption.
|
|
* No meaning.
|
|
*/
|
|
"use strict"
|
|
|
|
const path = require("path")
|
|
const resolve = require("resolve")
|
|
const getPackageJson = require("../util/get-package-json")
|
|
const getRequireTargets = require("../util/get-require-targets")
|
|
const getImportExportTargets = require("../util/get-import-export-targets")
|
|
|
|
const CORE_MODULES = new Set([
|
|
"assert",
|
|
"buffer",
|
|
"child_process",
|
|
"cluster",
|
|
"console",
|
|
"constants",
|
|
"crypto",
|
|
"dgram",
|
|
"dns",
|
|
/* "domain", */ "events",
|
|
"fs",
|
|
"http",
|
|
"https",
|
|
"module",
|
|
"net",
|
|
"os",
|
|
"path",
|
|
/* "punycode", */ "querystring",
|
|
"readline",
|
|
"repl",
|
|
"stream",
|
|
"string_decoder",
|
|
"timers",
|
|
"tls",
|
|
"tty",
|
|
"url",
|
|
"util",
|
|
"vm",
|
|
"zlib",
|
|
])
|
|
const BACK_SLASH = /\\/gu
|
|
|
|
module.exports = {
|
|
meta: {
|
|
docs: {
|
|
description:
|
|
"disallow third-party modules which are hiding core modules",
|
|
category: "Possible Errors",
|
|
recommended: false,
|
|
url:
|
|
"https://github.com/mysticatea/eslint-plugin-node/blob/v8.0.1/docs/rules/no-hide-core-modules.md",
|
|
},
|
|
type: "problem",
|
|
deprecated: true,
|
|
fixable: null,
|
|
schema: [
|
|
{
|
|
type: "object",
|
|
properties: {
|
|
allow: {
|
|
type: "array",
|
|
items: { enum: Array.from(CORE_MODULES) },
|
|
additionalItems: false,
|
|
uniqueItems: true,
|
|
},
|
|
ignoreDirectDependencies: { type: "boolean" },
|
|
ignoreIndirectDependencies: { type: "boolean" },
|
|
},
|
|
additionalProperties: false,
|
|
},
|
|
],
|
|
},
|
|
create(context) {
|
|
if (context.getFilename() === "<input>") {
|
|
return {}
|
|
}
|
|
const filePath = path.resolve(context.getFilename())
|
|
const dirPath = path.dirname(filePath)
|
|
const packageJson = getPackageJson(filePath)
|
|
const deps = new Set(
|
|
[].concat(
|
|
Object.keys((packageJson && packageJson.dependencies) || {}),
|
|
Object.keys((packageJson && packageJson.devDependencies) || {})
|
|
)
|
|
)
|
|
const options = context.options[0] || {}
|
|
const allow = options.allow || []
|
|
const ignoreDirectDependencies = Boolean(
|
|
options.ignoreDirectDependencies
|
|
)
|
|
const ignoreIndirectDependencies = Boolean(
|
|
options.ignoreIndirectDependencies
|
|
)
|
|
|
|
return {
|
|
"Program:exit"(node) {
|
|
const targets = []
|
|
.concat(
|
|
getRequireTargets(context, true),
|
|
getImportExportTargets(context, node, true)
|
|
)
|
|
.filter(t => CORE_MODULES.has(t.moduleName))
|
|
|
|
for (const target of targets) {
|
|
const name = target.moduleName
|
|
const allowed =
|
|
allow.indexOf(name) !== -1 ||
|
|
(ignoreDirectDependencies && deps.has(name)) ||
|
|
(ignoreIndirectDependencies && !deps.has(name))
|
|
|
|
if (allowed) {
|
|
continue
|
|
}
|
|
|
|
const resolved = resolve.sync(name, { basedir: dirPath })
|
|
const isCore = resolved === name
|
|
|
|
if (isCore) {
|
|
continue
|
|
}
|
|
|
|
context.report({
|
|
node: target.node,
|
|
loc: target.node.loc,
|
|
message:
|
|
"Unexpected import of third-party module '{{name}}'.",
|
|
data: {
|
|
name: path
|
|
.relative(dirPath, resolved)
|
|
.replace(BACK_SLASH, "/"),
|
|
},
|
|
})
|
|
}
|
|
},
|
|
}
|
|
},
|
|
}
|