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

305 lines (236 loc) 8.59 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = removeComponents; function _bluebird() { const data = require("bluebird"); _bluebird = function () { return data; }; return data; } function _ramda() { const data = _interopRequireDefault(require("ramda")); _ramda = function () { return data; }; return data; } function _groupArray() { const data = _interopRequireDefault(require("group-array")); _groupArray = function () { return data; }; return data; } function _lodash() { const data = _interopRequireDefault(require("lodash.partition")); _lodash = function () { return data; }; return data; } function _bitIds() { const data = _interopRequireDefault(require("../../bit-id/bit-ids")); _bitIds = function () { return data; }; return data; } function _removedLocalObjects() { const data = _interopRequireDefault(require("../../scope/removed-local-objects")); _removedLocalObjects = function () { return data; }; return data; } function _logger() { const data = _interopRequireDefault(require("../../logger/logger")); _logger = function () { return data; }; return data; } function _constants() { const data = require("../../constants"); _constants = function () { return data; }; return data; } function _generalError() { const data = _interopRequireDefault(require("../../error/general-error")); _generalError = function () { return data; }; return data; } function _scopeRemotes() { const data = require("../../scope/scope-remotes"); _scopeRemotes = function () { return data; }; return data; } function _enrichContextFromGlobal() { const data = _interopRequireDefault(require("../../hooks/utils/enrich-context-from-global")); _enrichContextFromGlobal = function () { return data; }; return data; } function _consumerComponent() { const data = _interopRequireDefault(require("../component/consumer-component")); _consumerComponent = function () { return data; }; return data; } function _deleteComponentFiles() { const data = _interopRequireDefault(require("../component-ops/delete-component-files")); _deleteComponentFiles = function () { return data; }; return data; } function packageJsonUtils() { const data = _interopRequireWildcard(require("../component/package-json-utils")); packageJsonUtils = function () { return data; }; return data; } function _remotes() { const data = require("../../remotes"); _remotes = function () { return data; }; return data; } /** * Remove components local and remote * splits array of ids into local and remote and removes according to flags * @param {string[]} ids - list of remote component ids to delete * @param {boolean} force - delete component that are used by other components. * @param {boolean} remote - delete component from a remote scope * @param {boolean} track - keep tracking local staged components in bitmap. * @param {boolean} deleteFiles - delete local added files from fs. */ function removeComponents(_x) { return _removeComponents.apply(this, arguments); } /** * Remove remote component from ssh server * this method groups remote components by remote name and deletes remote components together * @param {BitIds} bitIds - list of remote component ids to delete * @param {boolean} force - delete component that are used by other components. */ function _removeComponents() { _removeComponents = (0, _bluebird().coroutine)(function* ({ consumer, ids, force, remote, track, deleteFiles }) { _logger().default.debugAndAddBreadCrumb('removeComponents', `{ids}. force: ${force.toString()}`, { ids: ids.toString() }); // added this to remove support for remove only one version from a component const bitIdsLatest = _bitIds().default.fromArray(ids.map(id => { return id.changeVersion(_constants().LATEST_BIT_VERSION); })); const [localIds, remoteIds] = (0, _lodash().default)(bitIdsLatest, id => id.isLocal()); if (remote && localIds.length) { throw new (_generalError().default)(`unable to remove the remote components: ${localIds.join(',')} as they don't contain a scope-name`); } const remoteResult = remote && !_ramda().default.isEmpty(remoteIds) ? yield removeRemote(consumer, remoteIds, force) : []; const localResult = !remote ? yield removeLocal(consumer, bitIdsLatest, force, track, deleteFiles) : new (_removedLocalObjects().default)(); return { localResult, remoteResult }; }); return _removeComponents.apply(this, arguments); } function removeRemote(_x2, _x3, _x4) { return _removeRemote.apply(this, arguments); } /** * removeLocal - remove local (imported, new staged components) from modules and bitmap according to flags * @param {BitIds} bitIds - list of component ids to delete * @param {boolean} force - delete component that are used by other components. * @param {boolean} deleteFiles - delete component that are used by other components. */ function _removeRemote() { _removeRemote = (0, _bluebird().coroutine)(function* (consumer, bitIds, force) { const groupedBitsByScope = (0, _groupArray().default)(bitIds, 'scope'); const remotes = consumer ? yield (0, _scopeRemotes().getScopeRemotes)(consumer.scope) : yield _remotes().Remotes.getGlobalRemotes(); const context = {}; (0, _enrichContextFromGlobal().default)(context); const scope = consumer ? consumer.scope : null; const removeP = Object.keys(groupedBitsByScope).map( /*#__PURE__*/function () { var _ref = (0, _bluebird().coroutine)(function* (key) { const resolvedRemote = yield remotes.resolve(key, scope); const idsStr = groupedBitsByScope[key].map(id => id.toStringWithoutVersion()); return resolvedRemote.deleteMany(idsStr, force, context); }); return function (_x10) { return _ref.apply(this, arguments); }; }()); return Promise.all(removeP); }); return _removeRemote.apply(this, arguments); } function removeLocal(_x5, _x6, _x7, _x8, _x9) { return _removeLocal.apply(this, arguments); } function _removeLocal() { _removeLocal = (0, _bluebird().coroutine)(function* (consumer, bitIds, force, track, deleteFiles) { // local remove in case user wants to delete tagged components const modifiedComponents = new (_bitIds().default)(); const nonModifiedComponents = new (_bitIds().default)(); // $FlowFixMe // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX! if (_ramda().default.isEmpty(bitIds)) return new (_removedLocalObjects().default)(); if (!force) { yield Promise.all(bitIds.map( /*#__PURE__*/function () { var _ref2 = (0, _bluebird().coroutine)(function* (id) { try { const componentStatus = yield consumer.getComponentStatusById(id); if (componentStatus.modified) modifiedComponents.push(id);else nonModifiedComponents.push(id); } catch (err) { // if a component has an error, such as, missing main file, we do want to allow removing that component if (_consumerComponent().default.isComponentInvalidByErrorType(err)) { nonModifiedComponents.push(id); } else { throw err; } } }); return function (_x11) { return _ref2.apply(this, arguments); }; }())); } const { removedComponentIds, missingComponents, dependentBits, removedDependencies } = yield consumer.scope.removeMany(force ? bitIds : nonModifiedComponents, force, true, consumer); if (!_ramda().default.isEmpty(removedComponentIds)) { yield (0, _deleteComponentFiles().default)(consumer, removedComponentIds, deleteFiles); yield (0, _deleteComponentFiles().default)(consumer, removedDependencies, false); if (!track) { yield packageJsonUtils().removeComponentsFromWorkspacesAndDependencies(consumer, removedComponentIds); yield consumer.cleanFromBitMap(removedComponentIds, removedDependencies); } } return new (_removedLocalObjects().default)(removedComponentIds, missingComponents, modifiedComponents, removedDependencies, dependentBits); }); return _removeLocal.apply(this, arguments); }