UNPKG

create-ts-index

Version:
154 lines 17.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const chalk_1 = tslib_1.__importDefault(require("chalk")); const dayjs_1 = tslib_1.__importDefault(require("dayjs")); const debug_1 = tslib_1.__importDefault(require("debug")); const path = tslib_1.__importStar(require("path")); const ctircLoader_1 = require("../options/ctircLoader"); const CTILogger_1 = require("../tools/CTILogger"); const CTIUtility_1 = require("../tools/CTIUtility"); const exportStatement_1 = require("../tools/exportStatement"); const CommandModule_1 = require("./CommandModule"); const log = debug_1.default('cti:EntrypointCommandModule'); class EntrypointCommandModule { do(cliCwd, passed) { return tslib_1.__awaiter(this, void 0, void 0, function* () { const cwd = CTIUtility_1.isNotEmpty(passed.globOptions) && CTIUtility_1.isNotEmpty(passed.globOptions.cwd) ? passed.globOptions.cwd : process.cwd(); const { readedFrom, option } = ctircLoader_1.ctircLoader({ cwd: cliCwd, fromCliOption: passed, inputDir: cwd, }); const logger = new CTILogger_1.CTILogger(option.verbose); logger.log('configuration from: ', readedFrom === '' ? 'default' : readedFrom); try { logger.log(chalk_1.default.yellowBright('Option: '), option); const targetFileGlob = option.targetExts.map((ext) => `*.${ext}`).join('|'); const allTsFiles = yield CommandModule_1.CommandModule.promisify.glob(`**/+(${targetFileGlob})`, option.globOptions); const tsFiles = CommandModule_1.CommandModule.targetFileFilter({ logger, option, filenames: allTsFiles, }); const dupLibDirs = tsFiles .filter((tsFile) => tsFile.split('/').length > 1) .map((tsFile) => { const splitted = tsFile.split('/'); const allPath = Array(splitted.length - 1) .fill(0) .map((_, index) => index + 1) .map((index) => { const a = splitted.slice(0, index).join('/'); return a; }); return allPath; }) .reduce((aggregated, libPath) => { return aggregated.concat(libPath); }, []); const dirSet = new Set(); dupLibDirs.forEach((dir) => dirSet.add(dir)); tsFiles.map((tsFile) => path.dirname(tsFile)).forEach((dir) => dirSet.add(dir)); const tsDirs = Array.from(dirSet); if (option.includeCWD && tsDirs.findIndex((dir) => path.resolve(dir) === path.resolve('.')) < 0) { tsDirs.push('.'); } tsDirs.sort((left, right) => { const llen = left.split('/').length; const rlen = right.split('/').length; if (llen > rlen) { return -1; } if (llen < rlen) { return 1; } return 0; }); yield this.write({ logger, option, directories: tsDirs }); logger.flog(chalk_1.default.green(`entrypoint create succeeded: ${option.globOptions.cwd}`)); } catch (err) { log('entrypoint: ', err.message); log('entrypoint: ', err.stack); logger.ferror(chalk_1.default.redBright(err)); } }); } write({ directories, option, logger, }) { return tslib_1.__awaiter(this, void 0, void 0, function* () { try { const zipFiles = yield Promise.all(directories.map((directory) => { return (() => tslib_1.__awaiter(this, void 0, void 0, function* () { const resolvePath = path.resolve(option.globOptions.cwd || __dirname); const elements = yield CommandModule_1.CommandModule.promisify.readDir(path.join(resolvePath, directory)); const stats = yield Promise.all(elements.map((target) => CommandModule_1.CommandModule.promisify.stat(path.join(resolvePath, directory, target)))); const statMap = elements.reduce((map, element, index) => { map[element] = stats[index]; return map; }, {}); const targets = elements .filter((element) => statMap[element].isDirectory() || element !== 'index.ts') .filter((element) => statMap[element].isDirectory() || element !== 'entrypoint.ts'); const categorized = targets.reduce((result, target) => { if (statMap[target].isDirectory()) { result.dir.push(target); } else { result.allFiles.push(target); } return result; }, { dir: [], allFiles: [] }); const excludePatternFilteredDirs = categorized.dir.filter((element) => { return !option.excludes.reduce((result, excludePattern) => { return result || element.indexOf(excludePattern) >= 0; }, false); }); excludePatternFilteredDirs.sort(); categorized.allFiles = CommandModule_1.CommandModule.targetFileFilter({ logger, option, filenames: categorized.allFiles, }); const filesInDirectory = categorized.allFiles.filter((element) => { return !option.fileExcludePatterns.reduce((result, excludePattern) => { return result || element.indexOf(excludePattern) >= 0; }, false); }); filesInDirectory.sort(); return filesInDirectory.map((file) => path.relative(resolvePath, path.join(resolvePath, directory, file))); }))(); })); const files = zipFiles.reduce((aggregated, _files) => { return aggregated.concat(_files); }); const getExport = exportStatement_1.getExportStatementCreator(option, logger); const exportString = files.map((target) => getExport(target)); const _buildComment = () => { if (option.withoutComment) { return ''; } if (option.useTimestamp) { return `// created from ${option.quote}create-ts-index${option.quote} ${dayjs_1.default().format('YYYY-MM-DD HH:mm')}\n\n`; } return `// created from ${option.quote}create-ts-index${option.quote}\n\n`; }; const comment = _buildComment(); const sortedExportString = exportString.sort(); const fileContent = comment + CTIUtility_1.addNewline(option, sortedExportString.join('\n')); const cwdPath = option.globOptions.cwd || __dirname; logger.log(chalk_1.default.green('entrypoiny writed:', `${cwdPath}${path.sep}entrypoint.ts`)); yield CommandModule_1.CommandModule.promisify.writeFile(path.join(cwdPath, 'entrypoint.ts'), fileContent, 'utf8'); } catch (err) { logger.error(chalk_1.default.red('indexWriter: ', err.message)); logger.error(chalk_1.default.red('indexWriter: ', err.stack)); } }); } } exports.EntrypointCommandModule = EntrypointCommandModule; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW50cnlwb2ludENvbW1hbmRNb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvRW50cnlwb2ludENvbW1hbmRNb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMERBQTBCO0FBQzFCLDBEQUEwQjtBQUMxQiwwREFBMEI7QUFDMUIsbURBQTZCO0FBQzdCLHdEQUFxRDtBQUVyRCxrREFBK0M7QUFDL0Msb0RBQTZEO0FBQzdELDhEQUFxRTtBQUNyRSxtREFBZ0Q7QUFHaEQsTUFBTSxHQUFHLEdBQUcsZUFBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7QUFFakQsTUFBYSx1QkFBdUI7SUFDckIsRUFBRSxDQUFDLE1BQWMsRUFBRSxNQUFxQzs7WUFDbkUsTUFBTSxHQUFHLEdBQ1AsdUJBQVUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksdUJBQVUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQztnQkFDbEUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRztnQkFDeEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUVwQixNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLHlCQUFXLENBQUM7Z0JBQ3pDLEdBQUcsRUFBRSxNQUFNO2dCQUNYLGFBQWEsRUFBRSxNQUFNO2dCQUNyQixRQUFRLEVBQUUsR0FBRzthQUNkLENBQUMsQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLElBQUkscUJBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDN0MsTUFBTSxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsRUFBRSxVQUFVLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRS9FLElBQUk7Z0JBQ0YsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFLLENBQUMsWUFBWSxDQUFD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