UNPKG

bit-bin

Version:

<a href="https://opensource.org/licenses/Apache-2.0"><img alt="apache" src="https://img.shields.io/badge/License-Apache%202.0-blue.svg"></a> <a href="https://github.com/teambit/bit/blob/master/CONTRIBUTING.md"><img alt="prs" src="https://img.shields.io/b

256 lines (202 loc) 10.2 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = paintComponent; function _chalk() { const data = _interopRequireDefault(require("chalk")); _chalk = function () { return data; }; return data; } function _table() { const data = require("table"); _table = function () { return data; }; return data; } function _padRight() { const data = _interopRequireDefault(require("pad-right")); _padRight = function () { return data; }; return data; } function _docsTemplate() { const data = _interopRequireDefault(require("./docs-template")); _docsTemplate = function () { return data; }; return data; } function _componentsObjectDiff() { const data = require("../../consumer/component-ops/components-object-diff"); _componentsObjectDiff = function () { return data; }; return data; } const COLUMN_WIDTH = 50; const tableColumnConfig = { columns: { 1: { alignment: 'left', width: COLUMN_WIDTH }, 2: { alignment: 'left', width: COLUMN_WIDTH } } }; function paintComponent(component, componentModel, showRemoteVersion, detailed, dependenciesInfo, dependentsInfo) { return componentModel ? paintWithCompare() : paintWithoutCompare(); function paintWithoutCompare() { const printableComponent = (0, _componentsObjectDiff().componentToPrintableForDiff)(component); // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! printableComponent.scopesList = (component.scopesList || []).map(s => s.name).join('\n'); const rows = getFields().map(field => { const arr = []; const title = (0, _componentsObjectDiff().prettifyFieldName)(field); if (!printableComponent[field]) return null; // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! arr.push(_chalk().default.cyan(title)); if (!printableComponent[field]) return null; if (printableComponent[field]) { if (printableComponent[field] instanceof Array) { arr.push( // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! printableComponent[field].map(str => calculatePadRightLength(str, COLUMN_WIDTH)).join(' ').trim()); // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! } else arr.push(printableComponent[field]); } return arr; }).filter(x => x); const componentTable = (0, _table().table)(rows, tableColumnConfig); const dependenciesTableStr = showRemoteVersion ? generateDependenciesTable() : ''; const dependentsInfoTableStr = generateDependentsInfoTable(); const dependenciesInfoTableStr = generateDependenciesInfoTable(); return componentTable + dependenciesTableStr + dependentsInfoTableStr + dependenciesInfoTableStr + (0, _docsTemplate().default)(component.docs); } function paintWithCompare() { if (!componentModel) throw new Error('paintWithCompare, componentModel must be defined'); const printableOriginalComponent = (0, _componentsObjectDiff().componentToPrintableForDiff)(component); // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! printableOriginalComponent.id += ' [file system]'; const printableComponentToCompare = (0, _componentsObjectDiff().componentToPrintableForDiff)(componentModel); const componentsDiffs = (0, _componentsObjectDiff().getDiffBetweenObjects)(printableOriginalComponent, printableComponentToCompare); const rows = getFields().map(field => { const arr = []; if (!printableOriginalComponent[field] && !printableComponentToCompare[field]) return null; const title = `${field[0].toUpperCase()}${field.substr(1)}`.replace(/([A-Z])/g, ' $1').trim(); // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! arr.push(field in componentsDiffs && field !== 'id' ? _chalk().default.red(title) : _chalk().default.cyan(title)); if (printableComponentToCompare[field] instanceof Array) { arr.push( // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! printableComponentToCompare[field].map(str => calculatePadRightLength(str, COLUMN_WIDTH)).join(' ').trim()); } else { // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! arr.push(printableComponentToCompare[field]); } if (printableOriginalComponent[field] instanceof Array) { arr.push( // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! printableOriginalComponent[field].map(str => calculatePadRightLength(str, COLUMN_WIDTH)).join(' ').trim()); } else { // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! arr.push(printableOriginalComponent[field]); } return arr; }).filter(x => x); const componentTable = (0, _table().table)(rows, tableColumnConfig); const dependenciesTableStr = generateDependenciesTable(); return componentTable + dependenciesTableStr; } function getFields() { const fields = ['id', 'compiler', 'tester', 'language', 'mainFile', 'dependencies', 'devDependencies', 'packages', 'devPackages', 'peerDependencies', 'files', 'specs', 'deprecated']; if (detailed) { const extraFields = ['overridesDependencies', 'overridesDevDependencies', 'overridesPeerDependencies', 'scopesList']; fields.push(...extraFields); } return fields; } function generateDependenciesTable() { if (!component.hasDependencies()) { return ''; } const dependencyHeader = []; if (showRemoteVersion) { // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! dependencyHeader.push(['Dependency ID', 'Current Version', 'Local Version', 'Remote Version']); } else { // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! dependencyHeader.push(['Dependencies']); } const getDependenciesRows = (dependencies, title) => { const dependencyRows = []; dependencies.forEach(dependency => { let dependencyId = showRemoteVersion ? dependency.id.toStringWithoutVersion() : dependency.id.toString(); dependencyId = title ? `${dependencyId} (${title})` : dependencyId; const row = [dependencyId]; if (showRemoteVersion) { const dependencyVersion = dependency.currentVersion; const localVersion = dependency.localVersion; const remoteVersion = dependency.remoteVersion ? dependency.remoteVersion : null; // if all versions are equal, paint them with green. Otherwise, paint with red const color = remoteVersion && remoteVersion === localVersion && remoteVersion === dependencyVersion || !remoteVersion && localVersion === dependencyVersion ? 'green' : 'red'; row.push(_chalk().default[color](dependencyVersion)); row.push(_chalk().default[color](localVersion)); row.push(remoteVersion ? _chalk().default[color](remoteVersion) : 'N/A'); } // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! dependencyRows.push(row); }); return dependencyRows; }; const dependenciesRows = getDependenciesRows(component.dependencies.get()); const devDependenciesRows = getDependenciesRows(component.devDependencies.get(), 'dev'); const allDependenciesRows = [...dependenciesRows, ...devDependenciesRows]; const dependenciesTable = (0, _table().table)(dependencyHeader.concat(allDependenciesRows)); return dependenciesTable; } function generateDependentsInfoTable() { if (!dependentsInfo.length) { return ''; } const dependentsHeader = []; dependentsHeader.push([// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! _chalk().default.cyan('Dependent ID'), // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! _chalk().default.cyan('Depth'), // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! _chalk().default.cyan('Immediate Dependency'), // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! _chalk().default.cyan('Dependent type')]); const allDependenciesRows = getAllDependenciesRows(dependentsInfo); // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! const dependentsTable = (0, _table().table)(dependentsHeader.concat(allDependenciesRows)); return `\n${_chalk().default.bold('Dependents Details')}\n${dependentsTable}`; } function generateDependenciesInfoTable() { if (!dependenciesInfo.length) { return ''; } const dependenciesHeader = []; dependenciesHeader.push([// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! _chalk().default.cyan('Dependency ID'), // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! _chalk().default.cyan('Depth'), // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! _chalk().default.cyan('Immediate Dependent'), // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! _chalk().default.cyan('Dependency type')]); const allDependenciesRows = getAllDependenciesRows(dependenciesInfo); // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! const dependenciesTable = (0, _table().table)(dependenciesHeader.concat(allDependenciesRows)); return `\n${_chalk().default.bold('Dependencies Details')}\n${dependenciesTable}`; } function getAllDependenciesRows(dependenciesInfoArray) { return dependenciesInfoArray.map(dependency => { const row = []; // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! row.push(dependency.id.toString()); // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! row.push(dependency.depth.toString()); // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! row.push(dependency.parent === component.id.toString() ? '<self>' : dependency.parent); // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! row.push(dependency.dependencyType); return row; }); } function calculatePadRightLength(str, columnWidth) { if (!str) return ''; const padRightCount = Math.ceil(str.length / columnWidth) * columnWidth; return str.length > columnWidth ? (0, _padRight().default)(str, padRightCount, ' ') : (0, _padRight().default)(str, columnWidth, ' '); } }