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

export default defineConfig({
  plugins: [vue()],
  server: {
    headers: {
      'Cross-Origin-Opener-Policy': 'same-origin',
      'Cross-Origin-Embedder-Policy': 'require-corp'
    }
  },
  resolve: {
    alias: {
      '@': path.resolve(__dirname, './src'),
      'nostr-tools': path.resolve(__dirname, 'node_modules/nostr-tools'),
      'nostr-tools/nip06': path.resolve(__dirname, 'node_modules/nostr-tools/nip06'),
      'nostr-tools/core': path.resolve(__dirname, 'node_modules/nostr-tools/core'),
      stream: 'stream-browserify',
      util: 'util',
      crypto: 'crypto-browserify'
    },
    mainFields: ['module', 'jsnext:main', 'jsnext', 'main'],
  },
  optimizeDeps: {
    include: ['nostr-tools', 'nostr-tools/nip06', 'nostr-tools/core', '@jlongster/sql.js'],
    esbuildOptions: {
      define: {
        global: 'globalThis'
      }
    }
  },
  build: {
    sourcemap: true,
    target: 'esnext',
    chunkSizeWarningLimit: 1000,
    commonjsOptions: {
      include: [/node_modules/],
      transformMixedEsModules: true
    },
    rollupOptions: {
      external: ['stream', 'util', 'crypto'],
      output: {
        globals: {
          stream: 'stream',
          util: 'util',
          crypto: 'crypto'
        }
      }
    }
  },
  assetsInclude: ['**/*.wasm']
}); 