/** @type {import('next').NextConfig} */
const TEST_OUTPUT_GLOB = '**/.tmp-test/**';

function toIgnoredList(ignored) {
  if (!ignored) return [];
  const entries = Array.isArray(ignored) ? ignored : [ignored];
  return entries.filter((entry) => typeof entry === 'string' && entry.length > 0);
}

const nextConfig = {
  transpilePackages: ['@ftb/shared'],
  webpack(config, { dev }) {
    if (dev) {
      const ignored = toIgnoredList(config.watchOptions?.ignored);
      config.watchOptions = {
        ...config.watchOptions,
        ignored: ignored.includes(TEST_OUTPUT_GLOB) ? ignored : [...ignored, TEST_OUTPUT_GLOB],
      };
    }
    return config;
  },
};

module.exports = nextConfig;
