import { resolve } from 'path'
import type { UserConfig } from 'vite'

import { BUILD_CONFIG } from './build.config'

const projectRoot = resolve(__dirname, '..')
const input = BUILD_CONFIG.INPUT.node
const output = BUILD_CONFIG.OUTPUT.node

export function getNodeConfig(): UserConfig {
  return {
    root: projectRoot,
    cacheDir: resolve(projectRoot, BUILD_CONFIG.CACHE_DIR.node),

    // Bundle all dependencies into the Lambda artifact — no node_modules at runtime.
    ssr: {
      noExternal: true,
    },

    build: {
      // Server build configuration
      outDir: resolve(projectRoot, output.dir),
      emptyOutDir: true,
      ssr: true,
      target: 'node20',
      lib: {
        entry: resolve(projectRoot, input.entry),
        name: 'bot',
        fileName: output.js,
        formats: ['es'],
      },
      rollupOptions: {
        output: {
          exports: 'named',
        },
      },
    },
  }
}
