import { readdirSync } from 'fs';
import { join } from 'path';

// utils must build before core
const headPkgs = [
  // 'DeviceTree',
  // 'Empty',
  // 'HistoryInfo',
  // 'ImageSelect',
  // 'MqttView',
  // 'QuotaSelect',
  // 'RealTimeInfo',
  // 'TimeRangePicker',
  // 'AlarmScrollAssembly',
];
const pkgList = ['base-components', 'extend-components']
  .map((dir) => {
    const list = readdirSync(join(__dirname, 'packages', dir)).map((item) => `${item}!${dir}`);
    return list;
  })
  .flat();

const tailPkgs = pkgList
  .filter((pkg) => pkg.charAt(0) !== '.' && !headPkgs.includes(pkg))
  .map((item) => {
    const [name, path] = item.split('!');
    // return `${path}/${name}`;
    return `${name}`;
  });

const type = process.env.BUILD_TYPE;
let config = {};

if (type === 'lib') {
  config = {
    cjs: { type: 'babel', lazy: true },
    esm: false,
    runtimeHelpers: true,
    pkgs: [...headPkgs, ...tailPkgs],
    extraBabelPlugins: [
      [
        'babel-plugin-import',
        { libraryName: 'antd', libraryDirectory: 'lib', style: true },
        'antd',
      ],
    ],
  };
}

if (type === 'es') {
  config = {
    cjs: false,
    esm: {
      type: 'babel',
    },
    runtimeHelpers: true,
    pkgs: [...headPkgs, ...tailPkgs],
    extraBabelPlugins: [
      [require('./scripts/replaceLib')],
      ['babel-plugin-import', { libraryName: 'antd', libraryDirectory: 'es', style: true }, 'antd'],
    ],
  };
}

export default config;