import path from 'node:path';
import { fileURLToPath, pathToFileURL } from 'node:url';
import { existsSync } from 'node:fs';

const projectRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
const libRoot = path.join(projectRoot, 'src', 'lib');

export function resolve(specifier, context, nextResolve) {
  if (specifier.startsWith('$lib/')) {
    const relative = specifier.slice('$lib/'.length);
    const candidates = [
      path.join(libRoot, relative + '.ts'),
      path.join(libRoot, relative + '.js'),
      path.join(libRoot, relative, 'index.ts'),
      path.join(libRoot, relative, 'index.js'),
    ];
    for (const candidate of candidates) {
      if (existsSync(candidate)) {
        return nextResolve(pathToFileURL(candidate).href, context);
      }
    }
  }
  return nextResolve(specifier, context);
}
