import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";

// https://vite.dev/config/
export default defineConfig({
  plugins: [react()],

  // Node.js 호환성 문제 해결
  define: {
    global: "globalThis",
  },

  // Node.js 모듈 호환성 설정
  resolve: {
    alias: {
      stream: "stream-browserify",
      buffer: "buffer",
    },
  },

  // 의존성 최적화 설정
  optimizeDeps: {
    exclude: [
      // 중복 로딩 방지를 위해 redi와 univer 관련 제외
      "@wendellhu/redi",
      "@univerjs/core",
      "@univerjs/design",
      "@univerjs/ui",
      "@univerjs/sheets",
      "@univerjs/sheets-ui",
      "@univerjs/docs",
      "@univerjs/docs-ui",
      "@univerjs/engine-render",
      "@univerjs/engine-formula",
      "@univerjs/sheets-formula",
      "@univerjs/sheets-formula-ui",
      "@univerjs/sheets-numfmt",
      "@univerjs/sheets-numfmt-ui",
      "@univerjs/facade",
    ],
  },

  // 빌드 설정
  build: {
    rollupOptions: {
      external: [],
      output: {
        manualChunks: {
          // Univer 관련 라이브러리를 별도 청크로 분리
          "univer-core": [
            "@univerjs/core",
            "@univerjs/design",
            "@univerjs/engine-render",
            "@univerjs/engine-formula",
          ],
          "univer-sheets": [
            "@univerjs/sheets",
            "@univerjs/sheets-ui",
            "@univerjs/sheets-formula",
            "@univerjs/sheets-formula-ui",
            "@univerjs/sheets-numfmt",
            "@univerjs/sheets-numfmt-ui",
          ],
          "univer-docs": ["@univerjs/docs", "@univerjs/docs-ui"],
          "univer-ui": ["@univerjs/ui", "@univerjs/facade"],
        },
      },
    },
  },

  // 서버 설정
  server: {
    fs: {
      strict: false,
    },
  },

  // @ts-ignore - vitest config
  test: {
    globals: true,
    environment: "jsdom",
    setupFiles: ["./src/setupTests.ts"],
  },
});
