mirror of
https://github.com/github/codeql-action.git
synced 2025-12-24 08:10:06 +08:00
Update checked-in dependencies
This commit is contained in:
159
node_modules/eslint-module-utils/resolve.js
generated
vendored
159
node_modules/eslint-module-utils/resolve.js
generated
vendored
@@ -19,16 +19,30 @@ const fileExistsCache = new ModuleCache();
|
||||
|
||||
// Polyfill Node's `Module.createRequireFromPath` if not present (added in Node v10.12.0)
|
||||
// Use `Module.createRequire` if available (added in Node v12.2.0)
|
||||
const createRequire = Module.createRequire || Module.createRequireFromPath || function (filename) {
|
||||
const mod = new Module(filename, null);
|
||||
mod.filename = filename;
|
||||
mod.paths = Module._nodeModulePaths(path.dirname(filename));
|
||||
const createRequire = Module.createRequire
|
||||
// @ts-expect-error this only exists in older node
|
||||
|| Module.createRequireFromPath
|
||||
|| /** @type {(filename: string) => unknown} */ function (filename) {
|
||||
const mod = new Module(filename, void null);
|
||||
mod.filename = filename;
|
||||
// @ts-expect-error _nodeModulePaths is undocumented
|
||||
mod.paths = Module._nodeModulePaths(path.dirname(filename));
|
||||
|
||||
mod._compile(`module.exports = require;`, filename);
|
||||
// @ts-expect-error _compile is undocumented
|
||||
mod._compile(`module.exports = require;`, filename);
|
||||
|
||||
return mod.exports;
|
||||
};
|
||||
return mod.exports;
|
||||
};
|
||||
|
||||
/** @type {(resolver: object) => resolver is import('./resolve').Resolver} */
|
||||
function isResolverValid(resolver) {
|
||||
if ('interfaceVersion' in resolver && resolver.interfaceVersion === 2) {
|
||||
return 'resolve' in resolver && !!resolver.resolve && typeof resolver.resolve === 'function';
|
||||
}
|
||||
return 'resolveImport' in resolver && !!resolver.resolveImport && typeof resolver.resolveImport === 'function';
|
||||
}
|
||||
|
||||
/** @type {<T extends string>(target: T, sourceFile?: string | null | undefined) => undefined | ReturnType<typeof require>} */
|
||||
function tryRequire(target, sourceFile) {
|
||||
let resolved;
|
||||
try {
|
||||
@@ -51,7 +65,58 @@ function tryRequire(target, sourceFile) {
|
||||
return require(resolved);
|
||||
}
|
||||
|
||||
/** @type {<T extends Map<string, unknown>>(resolvers: string[] | string | { [k: string]: string }, map: T) => T} */
|
||||
function resolverReducer(resolvers, map) {
|
||||
if (Array.isArray(resolvers)) {
|
||||
resolvers.forEach((r) => resolverReducer(r, map));
|
||||
return map;
|
||||
}
|
||||
|
||||
if (typeof resolvers === 'string') {
|
||||
map.set(resolvers, null);
|
||||
return map;
|
||||
}
|
||||
|
||||
if (typeof resolvers === 'object') {
|
||||
for (const key in resolvers) {
|
||||
map.set(key, resolvers[key]);
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
const err = new Error('invalid resolver config');
|
||||
err.name = ERROR_NAME;
|
||||
throw err;
|
||||
}
|
||||
|
||||
/** @type {(sourceFile: string) => string} */
|
||||
function getBaseDir(sourceFile) {
|
||||
return pkgDir(sourceFile) || process.cwd();
|
||||
}
|
||||
|
||||
/** @type {(name: string, sourceFile: string) => import('./resolve').Resolver} */
|
||||
function requireResolver(name, sourceFile) {
|
||||
// Try to resolve package with conventional name
|
||||
const resolver = tryRequire(`eslint-import-resolver-${name}`, sourceFile)
|
||||
|| tryRequire(name, sourceFile)
|
||||
|| tryRequire(path.resolve(getBaseDir(sourceFile), name));
|
||||
|
||||
if (!resolver) {
|
||||
const err = new Error(`unable to load resolver "${name}".`);
|
||||
err.name = ERROR_NAME;
|
||||
throw err;
|
||||
}
|
||||
if (!isResolverValid(resolver)) {
|
||||
const err = new Error(`${name} with invalid interface loaded as resolver`);
|
||||
err.name = ERROR_NAME;
|
||||
throw err;
|
||||
}
|
||||
|
||||
return resolver;
|
||||
}
|
||||
|
||||
// https://stackoverflow.com/a/27382838
|
||||
/** @type {import('./resolve').fileExistsWithCaseSync} */
|
||||
exports.fileExistsWithCaseSync = function fileExistsWithCaseSync(filepath, cacheSettings, strict) {
|
||||
// don't care if the FS is case-sensitive
|
||||
if (CASE_SENSITIVE_FS) { return true; }
|
||||
@@ -80,12 +145,10 @@ exports.fileExistsWithCaseSync = function fileExistsWithCaseSync(filepath, cache
|
||||
return result;
|
||||
};
|
||||
|
||||
function relative(modulePath, sourceFile, settings) {
|
||||
return fullResolve(modulePath, sourceFile, settings).path;
|
||||
}
|
||||
|
||||
/** @type {import('./types').ESLintSettings | null} */
|
||||
let prevSettings = null;
|
||||
let memoizedHash = '';
|
||||
/** @type {(modulePath: string, sourceFile: string, settings: import('./types').ESLintSettings) => import('./resolve').ResolvedResult} */
|
||||
function fullResolve(modulePath, sourceFile, settings) {
|
||||
// check if this is a bonus core module
|
||||
const coreSet = new Set(settings['import/core-modules']);
|
||||
@@ -105,10 +168,12 @@ function fullResolve(modulePath, sourceFile, settings) {
|
||||
const cachedPath = fileExistsCache.get(cacheKey, cacheSettings);
|
||||
if (cachedPath !== undefined) { return { found: true, path: cachedPath }; }
|
||||
|
||||
/** @type {(resolvedPath: string | null) => void} */
|
||||
function cache(resolvedPath) {
|
||||
fileExistsCache.set(cacheKey, resolvedPath);
|
||||
}
|
||||
|
||||
/** @type {(resolver: import('./resolve').Resolver, config: unknown) => import('./resolve').ResolvedResult} */
|
||||
function withResolver(resolver, config) {
|
||||
if (resolver.interfaceVersion === 2) {
|
||||
return resolver.resolve(modulePath, sourceFile, config);
|
||||
@@ -145,71 +210,22 @@ function fullResolve(modulePath, sourceFile, settings) {
|
||||
// cache(undefined)
|
||||
return { found: false };
|
||||
}
|
||||
|
||||
/** @type {import('./resolve').relative} */
|
||||
function relative(modulePath, sourceFile, settings) {
|
||||
return fullResolve(modulePath, sourceFile, settings).path;
|
||||
}
|
||||
exports.relative = relative;
|
||||
|
||||
function resolverReducer(resolvers, map) {
|
||||
if (Array.isArray(resolvers)) {
|
||||
resolvers.forEach((r) => resolverReducer(r, map));
|
||||
return map;
|
||||
}
|
||||
|
||||
if (typeof resolvers === 'string') {
|
||||
map.set(resolvers, null);
|
||||
return map;
|
||||
}
|
||||
|
||||
if (typeof resolvers === 'object') {
|
||||
for (const key in resolvers) {
|
||||
map.set(key, resolvers[key]);
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
const err = new Error('invalid resolver config');
|
||||
err.name = ERROR_NAME;
|
||||
throw err;
|
||||
}
|
||||
|
||||
function getBaseDir(sourceFile) {
|
||||
return pkgDir(sourceFile) || process.cwd();
|
||||
}
|
||||
function requireResolver(name, sourceFile) {
|
||||
// Try to resolve package with conventional name
|
||||
const resolver = tryRequire(`eslint-import-resolver-${name}`, sourceFile)
|
||||
|| tryRequire(name, sourceFile)
|
||||
|| tryRequire(path.resolve(getBaseDir(sourceFile), name));
|
||||
|
||||
if (!resolver) {
|
||||
const err = new Error(`unable to load resolver "${name}".`);
|
||||
err.name = ERROR_NAME;
|
||||
throw err;
|
||||
}
|
||||
if (!isResolverValid(resolver)) {
|
||||
const err = new Error(`${name} with invalid interface loaded as resolver`);
|
||||
err.name = ERROR_NAME;
|
||||
throw err;
|
||||
}
|
||||
|
||||
return resolver;
|
||||
}
|
||||
|
||||
function isResolverValid(resolver) {
|
||||
if (resolver.interfaceVersion === 2) {
|
||||
return resolver.resolve && typeof resolver.resolve === 'function';
|
||||
} else {
|
||||
return resolver.resolveImport && typeof resolver.resolveImport === 'function';
|
||||
}
|
||||
}
|
||||
|
||||
/** @type {Set<import('eslint').Rule.RuleContext>} */
|
||||
const erroredContexts = new Set();
|
||||
|
||||
/**
|
||||
* Given
|
||||
* @param {string} p - module path
|
||||
* @param {object} context - ESLint context
|
||||
* @return {string} - the full module filesystem path;
|
||||
* null if package is core;
|
||||
* undefined if not found
|
||||
* @param p - module path
|
||||
* @param context - ESLint context
|
||||
* @return - the full module filesystem path; null if package is core; undefined if not found
|
||||
* @type {import('./resolve').default}
|
||||
*/
|
||||
function resolve(p, context) {
|
||||
try {
|
||||
@@ -218,8 +234,11 @@ function resolve(p, context) {
|
||||
if (!erroredContexts.has(context)) {
|
||||
// The `err.stack` string starts with `err.name` followed by colon and `err.message`.
|
||||
// We're filtering out the default `err.name` because it adds little value to the message.
|
||||
// @ts-expect-error this might be an Error
|
||||
let errMessage = err.message;
|
||||
// @ts-expect-error this might be an Error
|
||||
if (err.name !== ERROR_NAME && err.stack) {
|
||||
// @ts-expect-error this might be an Error
|
||||
errMessage = err.stack.replace(/^Error: /, '');
|
||||
}
|
||||
context.report({
|
||||
|
||||
Reference in New Issue
Block a user