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
JavaScript
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, ' ');
}
}
;