text: const path = require('path');
  const fs = require('fs-extra');
  const execa = require('execa');
  const chalk = require('chalk');
  const { Extractor, ExtractorConfig } = require('@microsoft/api-extractor');
  
  module.exports = function myPlugin(pkgName) {
    return {
      name: 'dts-plugin', // this name will show up in warnings and errors
      async closeBundle() {
  
        // build types
        const target = pkgName;
        const pkgDir = path.join(__dirname, '..', '..', 'packages', `${target}`);
        const pkg = require(`${pkgDir}/package.json`);
        
        const extractorConfigPath = path.resolve(pkgDir, `api-extractor.json`)
        const extractorConfig = ExtractorConfig.loadFileAndPrepare(
          extractorConfigPath
        );
        const extractorResult = Extractor.invoke(extractorConfig, {
          localBuild: true,
          showVerboseMessages: true
        });
        
        if (extractorResult.succeeded) {
          // concat additional d.ts to rolled-up dts
          const typesDir = path.resolve(pkgDir, 'types')
          if (fs.existsSync(typesDir)) {
            const dtsPath = path.resolve(pkgDir, pkg.types)
            const existing = await fs.readFile(dtsPath, 'utf-8')
            const typeFiles = await fs.readdir(typesDir)
            const toAdd = await Promise.all(
              typeFiles.map(file => {
                return fs.readFile(path.resolve(typesDir, file), 'utf-8')
              })
            )
            await fs.writeFile(dtsPath, existing + '\n' + toAdd.join('\n'))
          }
          console.log(
            chalk.bold(chalk.green(`API Extractor completed successfully.`))
          )
        } else {
          console.error(
            `API Extractor completed with ${extractorResult.errorCount} errors` +
              ` and ${extractorResult.warningCount} warnings`
          )
          process.exitCode = 1
        }
        await fs.remove(`${pkgDir}/dist/packages`)
      }
    };
  }
  
  
  