| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 | 'use strict';exports.__esModule = true;const extname = require('path').extname;const log = require('debug')('eslint-plugin-import:utils:ignore');// one-shot memoized/** @type {Set<import('./types').Extension>} */ let cachedSet;/** @type {import('./types').ESLintSettings} */ let lastSettings;/** @type {import('./ignore').getFileExtensions} */function makeValidExtensionSet(settings) {  // start with explicit JS-parsed extensions  /** @type {Set<import('./types').Extension>} */  const exts = new Set(settings['import/extensions'] || ['.js', '.mjs', '.cjs']);  // all alternate parser extensions are also valid  if ('import/parsers' in settings) {    for (const parser in settings['import/parsers']) {      const parserSettings = settings['import/parsers'][parser];      if (!Array.isArray(parserSettings)) {        throw new TypeError('"settings" for ' + parser + ' must be an array');      }      parserSettings.forEach((ext) => exts.add(ext));    }  }  return exts;}exports.getFileExtensions = makeValidExtensionSet;/** @type {(context: import('eslint').Rule.RuleContext) => Set<import('./types').Extension>} */function validExtensions(context) {  if (cachedSet && context.settings === lastSettings) {    return cachedSet;  }  lastSettings = context.settings;  cachedSet = makeValidExtensionSet(context.settings);  return cachedSet;}/** @type {import('./ignore').hasValidExtension} */function hasValidExtension(path, context) {  // eslint-disable-next-line no-extra-parens  return validExtensions(context).has(/** @type {import('./types').Extension} */ (extname(path)));}exports.hasValidExtension = hasValidExtension;/** @type {import('./ignore').default} */exports.default = function ignore(path, context) {  // check extension whitelist first (cheap)  if (!hasValidExtension(path, context)) {    return true;  }  if (!('import/ignore' in context.settings)) {    return false;  }  const ignoreStrings = context.settings['import/ignore'];  for (let i = 0; i < ignoreStrings.length; i++) {    const regex = new RegExp(ignoreStrings[i]);    if (regex.test(path)) {      log(`ignoring ${path}, matched pattern /${ignoreStrings[i]}/`);      return true;    }  }  return false;};
 |