import { defineConfig } from 'vitest/config';
import path from 'node:path';
import { fileURLToPath } from 'node:url';

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

export default defineConfig({
  resolve: {
    alias: {
      '@zyphon/shared-types': path.resolve(__dirname, 'packages/shared-types/src/index.ts'),
      '@zyphon/crypto': path.resolve(__dirname, 'packages/crypto/src/index.ts'),
      '@zyphon/logger': path.resolve(__dirname, 'packages/logger/src/index.ts'),
      '@zyphon/provider-contracts': path.resolve(__dirname, 'packages/provider-contracts/src/index.ts'),
      '@zyphon/config-schema': path.resolve(__dirname, 'packages/config-schema/src/index.ts'),
      '@zyphon/config-loader': path.resolve(__dirname, 'packages/config-loader/src/index.ts'),
      '@zyphon/api-client': path.resolve(__dirname, 'packages/api-client/src/index.ts'),
      '@zyphon/test-utils': path.resolve(__dirname, 'packages/test-utils/src/index.ts'),
      '@zyphon/provider-mock': path.resolve(__dirname, 'providers/mock/src/index.ts'),
      '@zyphon/provider-email-smtp': path.resolve(__dirname, 'providers/email/smtp/src/index.ts'),
      '@zyphon/provider-email-sendgrid': path.resolve(__dirname, 'providers/email/sendgrid/src/index.ts'),
      '@zyphon/provider-email-ses': path.resolve(__dirname, 'providers/email/ses/src/index.ts'),
      '@zyphon/provider-email-zoho': path.resolve(__dirname, 'providers/email/zoho/src/index.ts'),
      '@zyphon/provider-email-mailgun': path.resolve(__dirname, 'providers/email/mailgun/src/index.ts'),
      '@zyphon/provider-generic': path.resolve(__dirname, 'providers/generic/src/index.ts'),
      '@zyphon/provider-sms-twilio': path.resolve(__dirname, 'providers/sms/twilio/src/index.ts'),
      '@zyphon/provider-sms-msg91': path.resolve(__dirname, 'providers/sms/msg91/src/index.ts'),
      '@zyphon/provider-sms-fast2sms': path.resolve(__dirname, 'providers/sms/fast2sms/src/index.ts'),
      '@zyphon/provider-whatsapp-meta': path.resolve(__dirname, 'providers/whatsapp/meta-cloud/src/index.ts'),
      '@zyphon/provider-whatsapp-twilio': path.resolve(__dirname, 'providers/whatsapp/twilio/src/index.ts'),
    },
  },
  test: {
    globals: true,
    environment: 'node',
    include: ['tests/**/*.test.ts', 'packages/**/*.test.ts', 'apps/**/*.test.ts'],
    // Avoid tinypool worker teardown issues on Node 22+; keep CI predictable on Node 20 LTS
    pool: 'threads',
    poolOptions: {
      threads: {
        singleThread: true,
      },
    },
    fileParallelism: false,
  },
});
