UNPKG

eslint-plugin-svelte

Version:
47 lines (46 loc) 1.28 kB
import Module from 'module'; import path from 'path'; import { getCwd, getFilename, getPhysicalFilename, getSourceCode } from './compat.js'; const cache = new WeakMap(); const cache4b = new Map(); /** * Load module */ export function loadModule(context, name) { const key = getSourceCode(context).ast; let modules = cache.get(key); if (!modules) { modules = {}; cache.set(key, modules); } const mod = modules[name] || cache4b.get(name); if (mod) return mod; try { // load from cwd const cwd = getCwd(context); const relativeTo = path.join(cwd, '__placeholder__.js'); return (modules[name] = Module.createRequire(relativeTo)(name)); } catch { // ignore } for (const relativeTo of [ // load from lint file name getFilename(context), // load from lint file name (physical) getPhysicalFilename(context), // load from this plugin module typeof __filename !== 'undefined' ? __filename : '' ]) { if (relativeTo) { try { return (modules[name] = Module.createRequire(relativeTo)(name)); } catch { // ignore } } } return null; }