import type { ESLint } from 'eslint'; import * as fs from 'node:fs'; import { resolve, basename, extname } from 'node:path'; function tryRequire(candidates: string[]) { for (const candidate of candidates) { try { require(candidate); return; } catch {} } } // https://github.com/gulpjs/interpret tryRequire([ 'esbin/register', 'esbuild-register', 'ts-node/register/transpile-only', '@swc/register', '@babel/register', 'coffeescript/register', ]); const folders = resolve(process.cwd(), 'eslint-local-rules'); const files = fs.readdirSync(folders); const plugin: ESLint.Plugin = { rules: {}, }; for (const file of files) { const name = basename(file, extname(file)); const module = require(resolve(folders, file)); plugin.rules![name] = module.default ?? module; } export = plugin;