import webpack from 'webpack'

import { BuildOptions } from './types/config'

/**
 * Конфигурация разрешения модулей для webpack
 *
 * Определяет, как webpack будет искать и разрешать импорты модулей.
 *
 * Настройки:
 * - extensions: автоматически разрешает указанные расширения файлов
 * - preferAbsolute: предпочитает абсолютные пути относительным
 * - modules: директории для поиска модулей
 * - mainFiles: имена файлов по умолчанию при импорте директории
 * - alias: алиасы для упрощения импортов (можно расширить)
 *
 * @param {BuildOptions} options - Опции сборки
 * @param {BuildPaths} options.paths - Пути проекта
 * @returns {webpack.ResolveOptions} Конфигурация resolve для webpack
 *
 * @example
 * // Благодаря extensions можно писать:
 * import Component from './Component' // вместо './Component.tsx'
 *
 * // Благодаря mainFiles можно писать:
 * import utils from './utils' // вместо './utils/index.ts'
 */
export function buildResolvers(options: BuildOptions): webpack.ResolveOptions {
  return {
    extensions: ['.tsx', '.ts', '.js'],
    preferAbsolute: true,
    modules: [options.paths.src, 'node_modules'],
    mainFiles: ['index'],
    alias: {
      '@': options.paths.src,
    },
  }
}
