All files / generateExportFile/utils generateIndexTs.ts

100% Statements 27/27
100% Branches 4/4
100% Functions 2/2
100% Lines 26/26

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 656x 3x     3x 3x 3x 3x   3x 14x 14x 14x 14x 14x 14x 14x 14x     14x   7x     2x     12x         12x                           12x           12x 1x       11x 11x     11x    
import * as fs from "fs";
import * as path from "path";
 
import { GenerateIndexTsParams } from "@types";
import { filterFileNameByExt } from "./filterFileNameByExt";
import { createIndexTsFileContent } from "./createIndexTsFileContent";
import { getFileNamesInDestinationContainExport } from "./getFileNamesInDestinationContainExport";
import { getFolderNamesInDestinationContainExport } from "./getFolderNamesInDestinationContainExport";
 
export const generateIndexTs = async ({
  fileExts,
  stripFileExts,
  inputDirectoryNames,
  inputFileNames,
  generateFileExt,
  destinationPath,
  ignoreDestinationPaths,
  babelConfigPath
}: GenerateIndexTsParams) => {
  // Ignore destination match destinations
  if (
    ignoreDestinationPaths.some(ignoreDestinationPath =>
      ignoreDestinationPath.test(destinationPath)
    )
  ) {
    return;
  }
 
  const fileNamesMatchExt = filterFileNameByExt({
    fileNames: inputFileNames,
    fileExts
  });
 
  const [fileNames, folderNames] = await Promise.all([
    getFileNamesInDestinationContainExport({
      fileNames: fileNamesMatchExt,
      destinationPath,
      babelConfigPath
    }),
    getFolderNamesInDestinationContainExport({
      folderNames: inputDirectoryNames,
      destinationPath,
      indexstring: generateFileExt
    })
  ]);
 
  // create file content
  const fileContent = createIndexTsFileContent({
    fileNames,
    folderNames,
    stripFileExts
  });
 
  if (!fileContent) {
    return;
  }
 
  // Print generated file name with success color
  const indexFilePath = path.join(destinationPath, `index.${generateFileExt}`);
  console.log(`Generate ${indexFilePath}`);
 
  // create index file
  return fs.writeFileSync(indexFilePath, fileContent);
};