@teambit/lanes 0.0.452 → 0.0.454

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,116 +1,82 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  require("core-js/modules/es.array.iterator.js");
6
-
7
5
  require("core-js/modules/es.promise.js");
8
-
9
6
  Object.defineProperty(exports, "__esModule", {
10
7
  value: true
11
8
  });
12
9
  exports.LaneSwitcher = void 0;
13
-
14
10
  function _defineProperty2() {
15
11
  const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
-
17
12
  _defineProperty2 = function () {
18
13
  return data;
19
14
  };
20
-
21
15
  return data;
22
16
  }
23
-
24
17
  function _pMapSeries() {
25
18
  const data = _interopRequireDefault(require("p-map-series"));
26
-
27
19
  _pMapSeries = function () {
28
20
  return data;
29
21
  };
30
-
31
22
  return data;
32
23
  }
33
-
34
24
  function _generalError() {
35
25
  const data = _interopRequireDefault(require("@teambit/legacy/dist/error/general-error"));
36
-
37
26
  _generalError = function () {
38
27
  return data;
39
28
  };
40
-
41
29
  return data;
42
30
  }
43
-
44
31
  function _laneId() {
45
32
  const data = require("@teambit/lane-id");
46
-
47
33
  _laneId = function () {
48
34
  return data;
49
35
  };
50
-
51
36
  return data;
52
37
  }
53
-
54
38
  function _repositories() {
55
39
  const data = require("@teambit/legacy/dist/scope/repositories");
56
-
57
40
  _repositories = function () {
58
41
  return data;
59
42
  };
60
-
61
43
  return data;
62
44
  }
63
-
64
45
  function _checkoutVersion() {
65
46
  const data = require("@teambit/legacy/dist/consumer/versions-ops/checkout-version");
66
-
67
47
  _checkoutVersion = function () {
68
48
  return data;
69
49
  };
70
-
71
50
  return data;
72
51
  }
73
-
74
52
  function _manyComponentsWriter() {
75
53
  const data = _interopRequireDefault(require("@teambit/legacy/dist/consumer/component-ops/many-components-writer"));
76
-
77
54
  _manyComponentsWriter = function () {
78
55
  return data;
79
56
  };
80
-
81
57
  return data;
82
58
  }
83
-
84
59
  function _mergeVersion() {
85
60
  const data = require("@teambit/legacy/dist/consumer/versions-ops/merge-version");
86
-
87
61
  _mergeVersion = function () {
88
62
  return data;
89
63
  };
90
-
91
64
  return data;
92
65
  }
93
-
94
66
  function _threeWayMerge() {
95
67
  const data = _interopRequireDefault(require("@teambit/legacy/dist/consumer/versions-ops/merge-version/three-way-merge"));
96
-
97
68
  _threeWayMerge = function () {
98
69
  return data;
99
70
  };
100
-
101
71
  return data;
102
72
  }
103
-
104
73
  function _bitError() {
105
74
  const data = require("@teambit/bit-error");
106
-
107
75
  _bitError = function () {
108
76
  return data;
109
77
  };
110
-
111
78
  return data;
112
79
  }
113
-
114
80
  class LaneSwitcher {
115
81
  // populated by `this.populateSwitchProps()`
116
82
  // populated by `this.populateSwitchProps()`, if default-lane, it's undefined
@@ -125,29 +91,25 @@ class LaneSwitcher {
125
91
  (0, _defineProperty2().default)(this, "laneToSwitchTo", void 0);
126
92
  this.consumer = this.workspace.consumer;
127
93
  }
128
-
129
94
  async switch() {
130
95
  this.logger.setStatusLine(`switching lanes`);
131
96
  await this.populateSwitchProps();
132
97
  const allComponentsStatus = await this.getAllComponentsStatus();
133
98
  const componentWithConflict = allComponentsStatus.find(component => component.mergeResults && component.mergeResults.hasConflicts);
134
-
135
99
  if (componentWithConflict) {
136
100
  if (!this.checkoutProps.promptMergeOptions && !this.checkoutProps.mergeStrategy) {
137
101
  throw new (_generalError().default)(`automatic merge has failed for component ${componentWithConflict.id.toStringWithoutVersion()}.\nplease use "--manual" to manually merge changes or use "--theirs / --ours" to choose one of the conflicted versions`);
138
102
  }
139
-
140
103
  if (!this.checkoutProps.mergeStrategy) this.checkoutProps.mergeStrategy = await (0, _mergeVersion().getMergeStrategyInteractive)();
141
104
  }
142
-
143
105
  const failedComponents = allComponentsStatus.filter(componentStatus => componentStatus.failureMessage).map(componentStatus => ({
144
106
  id: componentStatus.id,
145
107
  failureMessage: componentStatus.failureMessage,
146
108
  unchangedLegitimately: componentStatus.unchangedLegitimately
147
109
  }));
148
- const succeededComponents = allComponentsStatus.filter(componentStatus => !componentStatus.failureMessage); // do not use Promise.all for applyVersion. otherwise, it'll write all components in parallel,
110
+ const succeededComponents = allComponentsStatus.filter(componentStatus => !componentStatus.failureMessage);
111
+ // do not use Promise.all for applyVersion. otherwise, it'll write all components in parallel,
149
112
  // which can be an issue when some components are also dependencies of others
150
-
151
113
  const componentsResults = await (0, _pMapSeries().default)(succeededComponents, ({
152
114
  id,
153
115
  componentFromFS,
@@ -175,11 +137,9 @@ class LaneSwitcher {
175
137
  failedComponents
176
138
  };
177
139
  }
178
-
179
140
  async populateSwitchProps() {
180
141
  const laneId = await this.consumer.scope.lanes.parseLaneIdFromString(this.switchProps.laneName);
181
142
  const localLane = await this.consumer.scope.loadLane(laneId);
182
-
183
143
  if (laneId.isDefault()) {
184
144
  await this.populatePropsAccordingToDefaultLane();
185
145
  } else if (localLane) {
@@ -188,15 +148,12 @@ class LaneSwitcher {
188
148
  await this.populatePropsAccordingToRemoteLane(laneId);
189
149
  }
190
150
  }
191
-
192
151
  async populatePropsAccordingToRemoteLane(remoteLaneId) {
193
152
  this.laneIdToSwitch = remoteLaneId;
194
153
  this.logger.debug(`populatePropsAccordingToRemoteLane, remoteLaneId: ${remoteLaneId.toString()}`);
195
-
196
154
  if (this.consumer.getCurrentLaneId().isEqual(remoteLaneId)) {
197
155
  throw new (_bitError().BitError)(`already checked out to "${remoteLaneId.toString()}"`);
198
156
  }
199
-
200
157
  const remoteLane = await this.Lanes.fetchLaneWithItsComponents(remoteLaneId);
201
158
  this.switchProps.laneName = remoteLaneId.name;
202
159
  this.switchProps.ids = remoteLane.components.map(l => l.id.changeVersion(l.head.toString()));
@@ -205,49 +162,40 @@ class LaneSwitcher {
205
162
  this.laneToSwitchTo = remoteLane;
206
163
  this.logger.debug(`populatePropsAccordingToRemoteLane, completed`);
207
164
  }
208
-
209
165
  async populatePropsAccordingToDefaultLane() {
210
166
  if (!this.consumer.isOnLane()) {
211
167
  throw new (_bitError().BitError)(`already checked out to "${this.switchProps.laneName}"`);
212
168
  }
213
-
214
169
  this.switchProps.ids = await this.consumer.getIdsOfDefaultLane();
215
170
  this.laneIdToSwitch = _laneId().LaneId.from(_laneId().DEFAULT_LANE, this.consumer.scope.name);
216
171
  }
217
-
218
172
  populatePropsAccordingToLocalLane(localLane) {
219
173
  if (this.consumer.getCurrentLaneId().name === this.switchProps.laneName) {
220
174
  throw new (_bitError().BitError)(`already checked out to "${this.switchProps.laneName}"`);
221
175
  }
222
-
223
176
  this.switchProps.ids = localLane.components.map(c => c.id.changeVersion(c.head.toString()));
224
177
  this.laneIdToSwitch = localLane.toLaneId();
225
178
  this.laneToSwitchTo = localLane;
226
179
  }
227
-
228
180
  async getAllComponentsStatus() {
229
181
  const {
230
182
  ids
231
183
  } = this.switchProps;
232
184
  const tmp = new (_repositories().Tmp)(this.consumer.scope);
233
-
234
185
  try {
235
186
  const componentsStatusP = ids.map(id => getComponentStatus(this.consumer, id, this.switchProps));
236
187
  const componentsStatus = await Promise.all(componentsStatusP);
237
- await tmp.clear(); // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
238
-
188
+ await tmp.clear();
189
+ // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
239
190
  return componentsStatus;
240
191
  } catch (err) {
241
192
  await tmp.clear();
242
193
  throw err;
243
194
  }
244
195
  }
245
-
246
196
  async saveLanesData() {
247
197
  var _this$laneToSwitchTo;
248
-
249
198
  const localLaneName = this.switchProps.alias || this.laneIdToSwitch.name;
250
-
251
199
  if (this.switchProps.remoteLane) {
252
200
  if (!this.switchProps.localTrackedLane) {
253
201
  this.consumer.scope.lanes.trackLane({
@@ -257,58 +205,43 @@ class LaneSwitcher {
257
205
  });
258
206
  }
259
207
  }
260
-
261
208
  this.consumer.setCurrentLane(this.laneIdToSwitch, !((_this$laneToSwitchTo = this.laneToSwitchTo) !== null && _this$laneToSwitchTo !== void 0 && _this$laneToSwitchTo.isNew));
262
209
  this.consumer.bitMap.syncWithLanes(this.laneToSwitchTo);
263
210
  }
264
-
265
211
  }
266
-
267
212
  exports.LaneSwitcher = LaneSwitcher;
268
-
269
213
  async function getComponentStatus(consumer, id, switchProps) {
270
214
  const componentStatus = {
271
215
  id
272
216
  };
273
-
274
217
  const returnFailure = (msg, unchangedLegitimately = false) => {
275
218
  componentStatus.failureMessage = msg;
276
219
  componentStatus.unchangedLegitimately = unchangedLegitimately;
277
220
  return componentStatus;
278
221
  };
279
-
280
222
  const modelComponent = await consumer.scope.getModelComponentIfExist(id);
281
-
282
223
  if (!modelComponent) {
283
224
  return returnFailure(`component ${id.toString()} had never imported`, true);
284
225
  }
285
-
286
226
  const unmerged = consumer.scope.objects.unmergedComponents.getEntry(id.name);
287
-
288
227
  if (unmerged) {
289
228
  return returnFailure(`component ${id.toStringWithoutVersion()} is in during-merge state, please snap/tag it first (or use bit merge --resolve/--abort)`);
290
229
  }
291
-
292
230
  const version = id.version;
293
-
294
231
  if (!version) {
295
232
  return returnFailure(`component doesn't have any snaps on ${_laneId().DEFAULT_LANE}`, true);
296
233
  }
297
-
298
234
  const existingBitMapId = consumer.bitMap.getBitIdIfExist(id, {
299
235
  ignoreVersion: true
300
236
  });
301
237
  const componentOnLane = await modelComponent.loadVersion(version, consumer.scope.objects);
302
-
303
238
  if (componentOnLane.isRemoved()) {
304
239
  return returnFailure(`component has been removed`, true);
305
240
  }
306
-
307
241
  if (!existingBitMapId) {
308
242
  if (switchProps.existingOnWorkspaceOnly) {
309
243
  return returnFailure(`component ${id.toStringWithoutVersion()} is not in the workspace`, true);
310
244
  }
311
-
312
245
  return {
313
246
  componentFromFS: undefined,
314
247
  componentFromModel: componentOnLane,
@@ -316,7 +249,6 @@ async function getComponentStatus(consumer, id, switchProps) {
316
249
  mergeResults: null
317
250
  };
318
251
  }
319
-
320
252
  if (!existingBitMapId.hasVersion()) {
321
253
  // happens when switching from main to a lane and a component was snapped on the lane.
322
254
  // in the .bitmap file, the version is "latest" or empty. so we just need to write the component according to the
@@ -328,21 +260,17 @@ async function getComponentStatus(consumer, id, switchProps) {
328
260
  mergeResults: null
329
261
  };
330
262
  }
331
-
332
263
  const currentlyUsedVersion = existingBitMapId.version;
333
-
334
264
  if (currentlyUsedVersion === version) {
335
265
  return returnFailure(`component ${id.toStringWithoutVersion()} is already at version ${version}`, true);
336
- } // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
337
-
338
-
266
+ }
267
+ // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
339
268
  const baseComponent = await modelComponent.loadVersion(currentlyUsedVersion, consumer.scope.objects);
340
- const component = await consumer.loadComponent(existingBitMapId); // don't use `consumer.isModified` here. otherwise, if there are dependency changes, the user can't discard them
269
+ const component = await consumer.loadComponent(existingBitMapId);
270
+ // don't use `consumer.isModified` here. otherwise, if there are dependency changes, the user can't discard them
341
271
  // and won't be able to switch lanes.
342
-
343
272
  const isModified = await consumer.isComponentSourceCodeModified(baseComponent, component);
344
273
  let mergeResults;
345
-
346
274
  const isHeadSameAsMain = () => {
347
275
  const head = modelComponent.getHead();
348
276
  if (!head) return false;
@@ -351,13 +279,12 @@ async function getComponentStatus(consumer, id, switchProps) {
351
279
  const headVersion = tagVersion || head.toString();
352
280
  return existingBitMapId.version === headVersion;
353
281
  };
354
-
355
282
  if (isModified) {
356
283
  if (!isHeadSameAsMain()) {
357
284
  throw new (_generalError().default)(`unable to checkout ${id.toStringWithoutVersion()}, the component is modified and belongs to another lane`);
358
285
  }
359
-
360
- const otherComponent = await modelComponent.loadVersion(existingBitMapId.version, // we are here because the head is same as main. so, existingBitMapId.version must be set
286
+ const otherComponent = await modelComponent.loadVersion(existingBitMapId.version,
287
+ // we are here because the head is same as main. so, existingBitMapId.version must be set
361
288
  consumer.scope.objects);
362
289
  mergeResults = await (0, _threeWayMerge().default)({
363
290
  consumer,
@@ -367,9 +294,8 @@ async function getComponentStatus(consumer, id, switchProps) {
367
294
  currentLabel: `${currentlyUsedVersion} modified`,
368
295
  baseComponent
369
296
  });
370
- } // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
371
-
372
-
297
+ }
298
+ // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
373
299
  return {
374
300
  componentFromFS: component,
375
301
  componentFromModel: componentOnLane,
@@ -1 +1 @@
1
- {"version":3,"names":["LaneSwitcher","constructor","workspace","logger","switchProps","checkoutProps","Lanes","consumer","switch","setStatusLine","populateSwitchProps","allComponentsStatus","getAllComponentsStatus","componentWithConflict","find","component","mergeResults","hasConflicts","promptMergeOptions","mergeStrategy","GeneralError","id","toStringWithoutVersion","getMergeStrategyInteractive","failedComponents","filter","componentStatus","failureMessage","map","unchangedLegitimately","succeededComponents","componentsResults","mapSeries","componentFromFS","applyVersion","markFilesToBeRemovedIfNeeded","saveLanesData","componentsWithDependencies","c","manyComponentsWriter","ManyComponentsWriter","installNpmPackages","skipNpmInstall","override","verbose","writeConfig","writeAll","deleteFilesIfNeeded","appliedVersionComponents","applyVersionResult","onDestroy","components","laneId","scope","lanes","parseLaneIdFromString","laneName","localLane","loadLane","isDefault","populatePropsAccordingToDefaultLane","populatePropsAccordingToLocalLane","populatePropsAccordingToRemoteLane","remoteLaneId","laneIdToSwitch","debug","toString","getCurrentLaneId","isEqual","BitError","remoteLane","fetchLaneWithItsComponents","name","ids","l","changeVersion","head","localTrackedLane","getAliasByLaneId","undefined","laneToSwitchTo","isOnLane","getIdsOfDefaultLane","LaneId","from","DEFAULT_LANE","toLaneId","tmp","Tmp","componentsStatusP","getComponentStatus","componentsStatus","Promise","all","clear","err","localLaneName","alias","trackLane","remoteScope","setCurrentLane","isNew","bitMap","syncWithLanes","returnFailure","msg","modelComponent","getModelComponentIfExist","unmerged","objects","unmergedComponents","getEntry","version","existingBitMapId","getBitIdIfExist","ignoreVersion","componentOnLane","loadVersion","isRemoved","existingOnWorkspaceOnly","componentFromModel","hasVersion","currentlyUsedVersion","baseComponent","loadComponent","isModified","isComponentSourceCodeModified","isHeadSameAsMain","getHead","tagVersion","getTagOfRefIfExists","headVersion","otherComponent","threeWayMerge","otherLabel","currentComponent","currentLabel"],"sources":["switch-lanes.ts"],"sourcesContent":["import mapSeries from 'p-map-series';\nimport { Consumer } from '@teambit/legacy/dist/consumer';\nimport GeneralError from '@teambit/legacy/dist/error/general-error';\nimport { LaneId, DEFAULT_LANE } from '@teambit/lane-id';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport { ComponentWithDependencies } from '@teambit/legacy/dist/scope';\nimport { Version, Lane } from '@teambit/legacy/dist/scope/models';\nimport { Tmp } from '@teambit/legacy/dist/scope/repositories';\nimport {\n applyVersion,\n ComponentStatus,\n CheckoutProps,\n deleteFilesIfNeeded,\n markFilesToBeRemovedIfNeeded,\n} from '@teambit/legacy/dist/consumer/versions-ops/checkout-version';\nimport ManyComponentsWriter from '@teambit/legacy/dist/consumer/component-ops/many-components-writer';\nimport {\n FailedComponents,\n getMergeStrategyInteractive,\n ApplyVersionResults,\n} from '@teambit/legacy/dist/consumer/versions-ops/merge-version';\nimport threeWayMerge, {\n MergeResultsThreeWay,\n} from '@teambit/legacy/dist/consumer/versions-ops/merge-version/three-way-merge';\nimport { Workspace } from '@teambit/workspace';\nimport { Logger } from '@teambit/logger';\nimport { BitError } from '@teambit/bit-error';\nimport { LanesMain } from './lanes.main.runtime';\n\nexport type SwitchProps = {\n laneName: string;\n ids?: BitId[];\n existingOnWorkspaceOnly: boolean;\n remoteLane?: Lane;\n localTrackedLane?: string;\n alias?: string;\n};\n\nexport class LaneSwitcher {\n private consumer: Consumer;\n private laneIdToSwitch: LaneId; // populated by `this.populateSwitchProps()`\n private laneToSwitchTo: Lane | undefined; // populated by `this.populateSwitchProps()`, if default-lane, it's undefined\n constructor(\n private workspace: Workspace,\n private logger: Logger,\n private switchProps: SwitchProps,\n private checkoutProps: CheckoutProps,\n private Lanes: LanesMain\n ) {\n this.consumer = this.workspace.consumer;\n }\n\n async switch(): Promise<ApplyVersionResults> {\n this.logger.setStatusLine(`switching lanes`);\n await this.populateSwitchProps();\n const allComponentsStatus: ComponentStatus[] = await this.getAllComponentsStatus();\n const componentWithConflict = allComponentsStatus.find(\n (component) => component.mergeResults && component.mergeResults.hasConflicts\n );\n if (componentWithConflict) {\n if (!this.checkoutProps.promptMergeOptions && !this.checkoutProps.mergeStrategy) {\n throw new GeneralError(\n `automatic merge has failed for component ${componentWithConflict.id.toStringWithoutVersion()}.\\nplease use \"--manual\" to manually merge changes or use \"--theirs / --ours\" to choose one of the conflicted versions`\n );\n }\n if (!this.checkoutProps.mergeStrategy) this.checkoutProps.mergeStrategy = await getMergeStrategyInteractive();\n }\n const failedComponents: FailedComponents[] = allComponentsStatus\n .filter((componentStatus) => componentStatus.failureMessage)\n .map((componentStatus) => ({\n id: componentStatus.id,\n failureMessage: componentStatus.failureMessage as string,\n unchangedLegitimately: componentStatus.unchangedLegitimately,\n }));\n\n const succeededComponents = allComponentsStatus.filter((componentStatus) => !componentStatus.failureMessage);\n // do not use Promise.all for applyVersion. otherwise, it'll write all components in parallel,\n // which can be an issue when some components are also dependencies of others\n const componentsResults = await mapSeries(succeededComponents, ({ id, componentFromFS, mergeResults }) => {\n return applyVersion(this.consumer, id, componentFromFS, mergeResults, this.checkoutProps);\n });\n\n markFilesToBeRemovedIfNeeded(succeededComponents, componentsResults);\n\n await this.saveLanesData();\n\n const componentsWithDependencies = componentsResults\n .map((c) => c.component)\n .filter((c) => c) as ComponentWithDependencies[];\n\n const manyComponentsWriter = new ManyComponentsWriter({\n consumer: this.consumer,\n componentsWithDependencies,\n installNpmPackages: !this.checkoutProps.skipNpmInstall,\n override: true,\n verbose: this.checkoutProps.verbose,\n writeConfig: this.checkoutProps.writeConfig,\n });\n await manyComponentsWriter.writeAll();\n await deleteFilesIfNeeded(componentsResults, this.consumer);\n\n const appliedVersionComponents = componentsResults.map((c) => c.applyVersionResult);\n\n await this.consumer.onDestroy();\n\n return { components: appliedVersionComponents, failedComponents };\n }\n\n private async populateSwitchProps() {\n const laneId = await this.consumer.scope.lanes.parseLaneIdFromString(this.switchProps.laneName);\n\n const localLane = await this.consumer.scope.loadLane(laneId);\n if (laneId.isDefault()) {\n await this.populatePropsAccordingToDefaultLane();\n } else if (localLane) {\n this.populatePropsAccordingToLocalLane(localLane);\n } else {\n await this.populatePropsAccordingToRemoteLane(laneId);\n }\n }\n\n private async populatePropsAccordingToRemoteLane(remoteLaneId: LaneId) {\n this.laneIdToSwitch = remoteLaneId;\n this.logger.debug(`populatePropsAccordingToRemoteLane, remoteLaneId: ${remoteLaneId.toString()}`);\n if (this.consumer.getCurrentLaneId().isEqual(remoteLaneId)) {\n throw new BitError(`already checked out to \"${remoteLaneId.toString()}\"`);\n }\n const remoteLane = await this.Lanes.fetchLaneWithItsComponents(remoteLaneId);\n this.switchProps.laneName = remoteLaneId.name;\n this.switchProps.ids = remoteLane.components.map((l) => l.id.changeVersion(l.head.toString()));\n this.switchProps.localTrackedLane = this.consumer.scope.lanes.getAliasByLaneId(remoteLaneId) || undefined;\n this.switchProps.remoteLane = remoteLane;\n this.laneToSwitchTo = remoteLane;\n this.logger.debug(`populatePropsAccordingToRemoteLane, completed`);\n }\n\n private async populatePropsAccordingToDefaultLane() {\n if (!this.consumer.isOnLane()) {\n throw new BitError(`already checked out to \"${this.switchProps.laneName}\"`);\n }\n this.switchProps.ids = await this.consumer.getIdsOfDefaultLane();\n this.laneIdToSwitch = LaneId.from(DEFAULT_LANE, this.consumer.scope.name);\n }\n\n private populatePropsAccordingToLocalLane(localLane: Lane) {\n if (this.consumer.getCurrentLaneId().name === this.switchProps.laneName) {\n throw new BitError(`already checked out to \"${this.switchProps.laneName}\"`);\n }\n this.switchProps.ids = localLane.components.map((c) => c.id.changeVersion(c.head.toString()));\n this.laneIdToSwitch = localLane.toLaneId();\n this.laneToSwitchTo = localLane;\n }\n\n private async getAllComponentsStatus(): Promise<ComponentStatus[]> {\n const { ids } = this.switchProps;\n const tmp = new Tmp(this.consumer.scope);\n try {\n const componentsStatusP = (ids as BitId[]).map((id) => getComponentStatus(this.consumer, id, this.switchProps));\n const componentsStatus = await Promise.all(componentsStatusP);\n await tmp.clear();\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return componentsStatus;\n } catch (err: any) {\n await tmp.clear();\n throw err;\n }\n }\n\n private async saveLanesData() {\n const localLaneName = this.switchProps.alias || this.laneIdToSwitch.name;\n if (this.switchProps.remoteLane) {\n if (!this.switchProps.localTrackedLane) {\n this.consumer.scope.lanes.trackLane({\n localLane: localLaneName,\n remoteLane: this.laneIdToSwitch.name,\n remoteScope: this.laneIdToSwitch.scope,\n });\n }\n }\n\n this.consumer.setCurrentLane(this.laneIdToSwitch, !this.laneToSwitchTo?.isNew);\n this.consumer.bitMap.syncWithLanes(this.laneToSwitchTo);\n }\n}\n\nasync function getComponentStatus(consumer: Consumer, id: BitId, switchProps: SwitchProps): Promise<ComponentStatus> {\n const componentStatus: ComponentStatus = { id };\n const returnFailure = (msg: string, unchangedLegitimately = false) => {\n componentStatus.failureMessage = msg;\n componentStatus.unchangedLegitimately = unchangedLegitimately;\n return componentStatus;\n };\n const modelComponent = await consumer.scope.getModelComponentIfExist(id);\n if (!modelComponent) {\n return returnFailure(`component ${id.toString()} had never imported`, true);\n }\n const unmerged = consumer.scope.objects.unmergedComponents.getEntry(id.name);\n if (unmerged) {\n return returnFailure(\n `component ${id.toStringWithoutVersion()} is in during-merge state, please snap/tag it first (or use bit merge --resolve/--abort)`\n );\n }\n const version = id.version;\n if (!version) {\n return returnFailure(`component doesn't have any snaps on ${DEFAULT_LANE}`, true);\n }\n const existingBitMapId = consumer.bitMap.getBitIdIfExist(id, { ignoreVersion: true });\n const componentOnLane: Version = await modelComponent.loadVersion(version, consumer.scope.objects);\n if (componentOnLane.isRemoved()) {\n return returnFailure(`component has been removed`, true);\n }\n if (!existingBitMapId) {\n if (switchProps.existingOnWorkspaceOnly) {\n return returnFailure(`component ${id.toStringWithoutVersion()} is not in the workspace`, true);\n }\n return { componentFromFS: undefined, componentFromModel: componentOnLane, id, mergeResults: null };\n }\n if (!existingBitMapId.hasVersion()) {\n // happens when switching from main to a lane and a component was snapped on the lane.\n // in the .bitmap file, the version is \"latest\" or empty. so we just need to write the component according to the\n // model. we don't care about the componentFromFS\n return { componentFromFS: undefined, componentFromModel: componentOnLane, id, mergeResults: null };\n }\n const currentlyUsedVersion = existingBitMapId.version;\n if (currentlyUsedVersion === version) {\n return returnFailure(`component ${id.toStringWithoutVersion()} is already at version ${version}`, true);\n }\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n const baseComponent: Version = await modelComponent.loadVersion(currentlyUsedVersion, consumer.scope.objects);\n const component = await consumer.loadComponent(existingBitMapId);\n // don't use `consumer.isModified` here. otherwise, if there are dependency changes, the user can't discard them\n // and won't be able to switch lanes.\n const isModified = await consumer.isComponentSourceCodeModified(baseComponent, component);\n let mergeResults: MergeResultsThreeWay | null | undefined;\n const isHeadSameAsMain = () => {\n const head = modelComponent.getHead();\n if (!head) return false;\n if (!existingBitMapId.version) return false;\n const tagVersion = modelComponent.getTagOfRefIfExists(head);\n const headVersion = tagVersion || head.toString();\n return existingBitMapId.version === headVersion;\n };\n if (isModified) {\n if (!isHeadSameAsMain()) {\n throw new GeneralError(\n `unable to checkout ${id.toStringWithoutVersion()}, the component is modified and belongs to another lane`\n );\n }\n\n const otherComponent: Version = await modelComponent.loadVersion(\n existingBitMapId.version as string, // we are here because the head is same as main. so, existingBitMapId.version must be set\n consumer.scope.objects\n );\n mergeResults = await threeWayMerge({\n consumer,\n otherComponent,\n otherLabel: version,\n currentComponent: component,\n currentLabel: `${currentlyUsedVersion} modified`,\n baseComponent,\n });\n }\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return { componentFromFS: component, componentFromModel: componentOnLane, id, mergeResults };\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["LaneSwitcher","constructor","workspace","logger","switchProps","checkoutProps","Lanes","consumer","switch","setStatusLine","populateSwitchProps","allComponentsStatus","getAllComponentsStatus","componentWithConflict","find","component","mergeResults","hasConflicts","promptMergeOptions","mergeStrategy","GeneralError","id","toStringWithoutVersion","getMergeStrategyInteractive","failedComponents","filter","componentStatus","failureMessage","map","unchangedLegitimately","succeededComponents","componentsResults","mapSeries","componentFromFS","applyVersion","markFilesToBeRemovedIfNeeded","saveLanesData","componentsWithDependencies","c","manyComponentsWriter","ManyComponentsWriter","installNpmPackages","skipNpmInstall","override","verbose","writeConfig","writeAll","deleteFilesIfNeeded","appliedVersionComponents","applyVersionResult","onDestroy","components","laneId","scope","lanes","parseLaneIdFromString","laneName","localLane","loadLane","isDefault","populatePropsAccordingToDefaultLane","populatePropsAccordingToLocalLane","populatePropsAccordingToRemoteLane","remoteLaneId","laneIdToSwitch","debug","toString","getCurrentLaneId","isEqual","BitError","remoteLane","fetchLaneWithItsComponents","name","ids","l","changeVersion","head","localTrackedLane","getAliasByLaneId","undefined","laneToSwitchTo","isOnLane","getIdsOfDefaultLane","LaneId","from","DEFAULT_LANE","toLaneId","tmp","Tmp","componentsStatusP","getComponentStatus","componentsStatus","Promise","all","clear","err","localLaneName","alias","trackLane","remoteScope","setCurrentLane","isNew","bitMap","syncWithLanes","returnFailure","msg","modelComponent","getModelComponentIfExist","unmerged","objects","unmergedComponents","getEntry","version","existingBitMapId","getBitIdIfExist","ignoreVersion","componentOnLane","loadVersion","isRemoved","existingOnWorkspaceOnly","componentFromModel","hasVersion","currentlyUsedVersion","baseComponent","loadComponent","isModified","isComponentSourceCodeModified","isHeadSameAsMain","getHead","tagVersion","getTagOfRefIfExists","headVersion","otherComponent","threeWayMerge","otherLabel","currentComponent","currentLabel"],"sources":["switch-lanes.ts"],"sourcesContent":["import mapSeries from 'p-map-series';\nimport { Consumer } from '@teambit/legacy/dist/consumer';\nimport GeneralError from '@teambit/legacy/dist/error/general-error';\nimport { LaneId, DEFAULT_LANE } from '@teambit/lane-id';\nimport { BitId } from '@teambit/legacy-bit-id';\nimport { ComponentWithDependencies } from '@teambit/legacy/dist/scope';\nimport { Version, Lane } from '@teambit/legacy/dist/scope/models';\nimport { Tmp } from '@teambit/legacy/dist/scope/repositories';\nimport {\n applyVersion,\n ComponentStatus,\n CheckoutProps,\n deleteFilesIfNeeded,\n markFilesToBeRemovedIfNeeded,\n} from '@teambit/legacy/dist/consumer/versions-ops/checkout-version';\nimport ManyComponentsWriter from '@teambit/legacy/dist/consumer/component-ops/many-components-writer';\nimport {\n FailedComponents,\n getMergeStrategyInteractive,\n ApplyVersionResults,\n} from '@teambit/legacy/dist/consumer/versions-ops/merge-version';\nimport threeWayMerge, {\n MergeResultsThreeWay,\n} from '@teambit/legacy/dist/consumer/versions-ops/merge-version/three-way-merge';\nimport { Workspace } from '@teambit/workspace';\nimport { Logger } from '@teambit/logger';\nimport { BitError } from '@teambit/bit-error';\nimport { LanesMain } from './lanes.main.runtime';\n\nexport type SwitchProps = {\n laneName: string;\n ids?: BitId[];\n existingOnWorkspaceOnly: boolean;\n remoteLane?: Lane;\n localTrackedLane?: string;\n alias?: string;\n};\n\nexport class LaneSwitcher {\n private consumer: Consumer;\n private laneIdToSwitch: LaneId; // populated by `this.populateSwitchProps()`\n private laneToSwitchTo: Lane | undefined; // populated by `this.populateSwitchProps()`, if default-lane, it's undefined\n constructor(\n private workspace: Workspace,\n private logger: Logger,\n private switchProps: SwitchProps,\n private checkoutProps: CheckoutProps,\n private Lanes: LanesMain\n ) {\n this.consumer = this.workspace.consumer;\n }\n\n async switch(): Promise<ApplyVersionResults> {\n this.logger.setStatusLine(`switching lanes`);\n await this.populateSwitchProps();\n const allComponentsStatus: ComponentStatus[] = await this.getAllComponentsStatus();\n const componentWithConflict = allComponentsStatus.find(\n (component) => component.mergeResults && component.mergeResults.hasConflicts\n );\n if (componentWithConflict) {\n if (!this.checkoutProps.promptMergeOptions && !this.checkoutProps.mergeStrategy) {\n throw new GeneralError(\n `automatic merge has failed for component ${componentWithConflict.id.toStringWithoutVersion()}.\\nplease use \"--manual\" to manually merge changes or use \"--theirs / --ours\" to choose one of the conflicted versions`\n );\n }\n if (!this.checkoutProps.mergeStrategy) this.checkoutProps.mergeStrategy = await getMergeStrategyInteractive();\n }\n const failedComponents: FailedComponents[] = allComponentsStatus\n .filter((componentStatus) => componentStatus.failureMessage)\n .map((componentStatus) => ({\n id: componentStatus.id,\n failureMessage: componentStatus.failureMessage as string,\n unchangedLegitimately: componentStatus.unchangedLegitimately,\n }));\n\n const succeededComponents = allComponentsStatus.filter((componentStatus) => !componentStatus.failureMessage);\n // do not use Promise.all for applyVersion. otherwise, it'll write all components in parallel,\n // which can be an issue when some components are also dependencies of others\n const componentsResults = await mapSeries(succeededComponents, ({ id, componentFromFS, mergeResults }) => {\n return applyVersion(this.consumer, id, componentFromFS, mergeResults, this.checkoutProps);\n });\n\n markFilesToBeRemovedIfNeeded(succeededComponents, componentsResults);\n\n await this.saveLanesData();\n\n const componentsWithDependencies = componentsResults\n .map((c) => c.component)\n .filter((c) => c) as ComponentWithDependencies[];\n\n const manyComponentsWriter = new ManyComponentsWriter({\n consumer: this.consumer,\n componentsWithDependencies,\n installNpmPackages: !this.checkoutProps.skipNpmInstall,\n override: true,\n verbose: this.checkoutProps.verbose,\n writeConfig: this.checkoutProps.writeConfig,\n });\n await manyComponentsWriter.writeAll();\n await deleteFilesIfNeeded(componentsResults, this.consumer);\n\n const appliedVersionComponents = componentsResults.map((c) => c.applyVersionResult);\n\n await this.consumer.onDestroy();\n\n return { components: appliedVersionComponents, failedComponents };\n }\n\n private async populateSwitchProps() {\n const laneId = await this.consumer.scope.lanes.parseLaneIdFromString(this.switchProps.laneName);\n\n const localLane = await this.consumer.scope.loadLane(laneId);\n if (laneId.isDefault()) {\n await this.populatePropsAccordingToDefaultLane();\n } else if (localLane) {\n this.populatePropsAccordingToLocalLane(localLane);\n } else {\n await this.populatePropsAccordingToRemoteLane(laneId);\n }\n }\n\n private async populatePropsAccordingToRemoteLane(remoteLaneId: LaneId) {\n this.laneIdToSwitch = remoteLaneId;\n this.logger.debug(`populatePropsAccordingToRemoteLane, remoteLaneId: ${remoteLaneId.toString()}`);\n if (this.consumer.getCurrentLaneId().isEqual(remoteLaneId)) {\n throw new BitError(`already checked out to \"${remoteLaneId.toString()}\"`);\n }\n const remoteLane = await this.Lanes.fetchLaneWithItsComponents(remoteLaneId);\n this.switchProps.laneName = remoteLaneId.name;\n this.switchProps.ids = remoteLane.components.map((l) => l.id.changeVersion(l.head.toString()));\n this.switchProps.localTrackedLane = this.consumer.scope.lanes.getAliasByLaneId(remoteLaneId) || undefined;\n this.switchProps.remoteLane = remoteLane;\n this.laneToSwitchTo = remoteLane;\n this.logger.debug(`populatePropsAccordingToRemoteLane, completed`);\n }\n\n private async populatePropsAccordingToDefaultLane() {\n if (!this.consumer.isOnLane()) {\n throw new BitError(`already checked out to \"${this.switchProps.laneName}\"`);\n }\n this.switchProps.ids = await this.consumer.getIdsOfDefaultLane();\n this.laneIdToSwitch = LaneId.from(DEFAULT_LANE, this.consumer.scope.name);\n }\n\n private populatePropsAccordingToLocalLane(localLane: Lane) {\n if (this.consumer.getCurrentLaneId().name === this.switchProps.laneName) {\n throw new BitError(`already checked out to \"${this.switchProps.laneName}\"`);\n }\n this.switchProps.ids = localLane.components.map((c) => c.id.changeVersion(c.head.toString()));\n this.laneIdToSwitch = localLane.toLaneId();\n this.laneToSwitchTo = localLane;\n }\n\n private async getAllComponentsStatus(): Promise<ComponentStatus[]> {\n const { ids } = this.switchProps;\n const tmp = new Tmp(this.consumer.scope);\n try {\n const componentsStatusP = (ids as BitId[]).map((id) => getComponentStatus(this.consumer, id, this.switchProps));\n const componentsStatus = await Promise.all(componentsStatusP);\n await tmp.clear();\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return componentsStatus;\n } catch (err: any) {\n await tmp.clear();\n throw err;\n }\n }\n\n private async saveLanesData() {\n const localLaneName = this.switchProps.alias || this.laneIdToSwitch.name;\n if (this.switchProps.remoteLane) {\n if (!this.switchProps.localTrackedLane) {\n this.consumer.scope.lanes.trackLane({\n localLane: localLaneName,\n remoteLane: this.laneIdToSwitch.name,\n remoteScope: this.laneIdToSwitch.scope,\n });\n }\n }\n\n this.consumer.setCurrentLane(this.laneIdToSwitch, !this.laneToSwitchTo?.isNew);\n this.consumer.bitMap.syncWithLanes(this.laneToSwitchTo);\n }\n}\n\nasync function getComponentStatus(consumer: Consumer, id: BitId, switchProps: SwitchProps): Promise<ComponentStatus> {\n const componentStatus: ComponentStatus = { id };\n const returnFailure = (msg: string, unchangedLegitimately = false) => {\n componentStatus.failureMessage = msg;\n componentStatus.unchangedLegitimately = unchangedLegitimately;\n return componentStatus;\n };\n const modelComponent = await consumer.scope.getModelComponentIfExist(id);\n if (!modelComponent) {\n return returnFailure(`component ${id.toString()} had never imported`, true);\n }\n const unmerged = consumer.scope.objects.unmergedComponents.getEntry(id.name);\n if (unmerged) {\n return returnFailure(\n `component ${id.toStringWithoutVersion()} is in during-merge state, please snap/tag it first (or use bit merge --resolve/--abort)`\n );\n }\n const version = id.version;\n if (!version) {\n return returnFailure(`component doesn't have any snaps on ${DEFAULT_LANE}`, true);\n }\n const existingBitMapId = consumer.bitMap.getBitIdIfExist(id, { ignoreVersion: true });\n const componentOnLane: Version = await modelComponent.loadVersion(version, consumer.scope.objects);\n if (componentOnLane.isRemoved()) {\n return returnFailure(`component has been removed`, true);\n }\n if (!existingBitMapId) {\n if (switchProps.existingOnWorkspaceOnly) {\n return returnFailure(`component ${id.toStringWithoutVersion()} is not in the workspace`, true);\n }\n return { componentFromFS: undefined, componentFromModel: componentOnLane, id, mergeResults: null };\n }\n if (!existingBitMapId.hasVersion()) {\n // happens when switching from main to a lane and a component was snapped on the lane.\n // in the .bitmap file, the version is \"latest\" or empty. so we just need to write the component according to the\n // model. we don't care about the componentFromFS\n return { componentFromFS: undefined, componentFromModel: componentOnLane, id, mergeResults: null };\n }\n const currentlyUsedVersion = existingBitMapId.version;\n if (currentlyUsedVersion === version) {\n return returnFailure(`component ${id.toStringWithoutVersion()} is already at version ${version}`, true);\n }\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n const baseComponent: Version = await modelComponent.loadVersion(currentlyUsedVersion, consumer.scope.objects);\n const component = await consumer.loadComponent(existingBitMapId);\n // don't use `consumer.isModified` here. otherwise, if there are dependency changes, the user can't discard them\n // and won't be able to switch lanes.\n const isModified = await consumer.isComponentSourceCodeModified(baseComponent, component);\n let mergeResults: MergeResultsThreeWay | null | undefined;\n const isHeadSameAsMain = () => {\n const head = modelComponent.getHead();\n if (!head) return false;\n if (!existingBitMapId.version) return false;\n const tagVersion = modelComponent.getTagOfRefIfExists(head);\n const headVersion = tagVersion || head.toString();\n return existingBitMapId.version === headVersion;\n };\n if (isModified) {\n if (!isHeadSameAsMain()) {\n throw new GeneralError(\n `unable to checkout ${id.toStringWithoutVersion()}, the component is modified and belongs to another lane`\n );\n }\n\n const otherComponent: Version = await modelComponent.loadVersion(\n existingBitMapId.version as string, // we are here because the head is same as main. so, existingBitMapId.version must be set\n consumer.scope.objects\n );\n mergeResults = await threeWayMerge({\n consumer,\n otherComponent,\n otherLabel: version,\n currentComponent: component,\n currentLabel: `${currentlyUsedVersion} modified`,\n baseComponent,\n });\n }\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return { componentFromFS: component, componentFromModel: componentOnLane, id, mergeResults };\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAIA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAOA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAKA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAKA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAYO,MAAMA,YAAY,CAAC;EAEQ;EACU;EAC1CC,WAAW,CACDC,SAAoB,EACpBC,MAAc,EACdC,WAAwB,EACxBC,aAA4B,EAC5BC,KAAgB,EACxB;IAAA,KALQJ,SAAoB,GAApBA,SAAoB;IAAA,KACpBC,MAAc,GAAdA,MAAc;IAAA,KACdC,WAAwB,GAAxBA,WAAwB;IAAA,KACxBC,aAA4B,GAA5BA,aAA4B;IAAA,KAC5BC,KAAgB,GAAhBA,KAAgB;IAAA;IAAA;IAAA;IAExB,IAAI,CAACC,QAAQ,GAAG,IAAI,CAACL,SAAS,CAACK,QAAQ;EACzC;EAEA,MAAMC,MAAM,GAAiC;IAC3C,IAAI,CAACL,MAAM,CAACM,aAAa,CAAE,iBAAgB,CAAC;IAC5C,MAAM,IAAI,CAACC,mBAAmB,EAAE;IAChC,MAAMC,mBAAsC,GAAG,MAAM,IAAI,CAACC,sBAAsB,EAAE;IAClF,MAAMC,qBAAqB,GAAGF,mBAAmB,CAACG,IAAI,CACnDC,SAAS,IAAKA,SAAS,CAACC,YAAY,IAAID,SAAS,CAACC,YAAY,CAACC,YAAY,CAC7E;IACD,IAAIJ,qBAAqB,EAAE;MACzB,IAAI,CAAC,IAAI,CAACR,aAAa,CAACa,kBAAkB,IAAI,CAAC,IAAI,CAACb,aAAa,CAACc,aAAa,EAAE;QAC/E,MAAM,KAAIC,uBAAY,EACnB,4CAA2CP,qBAAqB,CAACQ,EAAE,CAACC,sBAAsB,EAAG,wHAAuH,CACtN;MACH;MACA,IAAI,CAAC,IAAI,CAACjB,aAAa,CAACc,aAAa,EAAE,IAAI,CAACd,aAAa,CAACc,aAAa,GAAG,MAAM,IAAAI,2CAA2B,GAAE;IAC/G;IACA,MAAMC,gBAAoC,GAAGb,mBAAmB,CAC7Dc,MAAM,CAAEC,eAAe,IAAKA,eAAe,CAACC,cAAc,CAAC,CAC3DC,GAAG,CAAEF,eAAe,KAAM;MACzBL,EAAE,EAAEK,eAAe,CAACL,EAAE;MACtBM,cAAc,EAAED,eAAe,CAACC,cAAwB;MACxDE,qBAAqB,EAAEH,eAAe,CAACG;IACzC,CAAC,CAAC,CAAC;IAEL,MAAMC,mBAAmB,GAAGnB,mBAAmB,CAACc,MAAM,CAAEC,eAAe,IAAK,CAACA,eAAe,CAACC,cAAc,CAAC;IAC5G;IACA;IACA,MAAMI,iBAAiB,GAAG,MAAM,IAAAC,qBAAS,EAACF,mBAAmB,EAAE,CAAC;MAAET,EAAE;MAAEY,eAAe;MAAEjB;IAAa,CAAC,KAAK;MACxG,OAAO,IAAAkB,+BAAY,EAAC,IAAI,CAAC3B,QAAQ,EAAEc,EAAE,EAAEY,eAAe,EAAEjB,YAAY,EAAE,IAAI,CAACX,aAAa,CAAC;IAC3F,CAAC,CAAC;IAEF,IAAA8B,+CAA4B,EAACL,mBAAmB,EAAEC,iBAAiB,CAAC;IAEpE,MAAM,IAAI,CAACK,aAAa,EAAE;IAE1B,MAAMC,0BAA0B,GAAGN,iBAAiB,CACjDH,GAAG,CAAEU,CAAC,IAAKA,CAAC,CAACvB,SAAS,CAAC,CACvBU,MAAM,CAAEa,CAAC,IAAKA,CAAC,CAAgC;IAElD,MAAMC,oBAAoB,GAAG,KAAIC,+BAAoB,EAAC;MACpDjC,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvB8B,0BAA0B;MAC1BI,kBAAkB,EAAE,CAAC,IAAI,CAACpC,aAAa,CAACqC,cAAc;MACtDC,QAAQ,EAAE,IAAI;MACdC,OAAO,EAAE,IAAI,CAACvC,aAAa,CAACuC,OAAO;MACnCC,WAAW,EAAE,IAAI,CAACxC,aAAa,CAACwC;IAClC,CAAC,CAAC;IACF,MAAMN,oBAAoB,CAACO,QAAQ,EAAE;IACrC,MAAM,IAAAC,sCAAmB,EAAChB,iBAAiB,EAAE,IAAI,CAACxB,QAAQ,CAAC;IAE3D,MAAMyC,wBAAwB,GAAGjB,iBAAiB,CAACH,GAAG,CAAEU,CAAC,IAAKA,CAAC,CAACW,kBAAkB,CAAC;IAEnF,MAAM,IAAI,CAAC1C,QAAQ,CAAC2C,SAAS,EAAE;IAE/B,OAAO;MAAEC,UAAU,EAAEH,wBAAwB;MAAExB;IAAiB,CAAC;EACnE;EAEA,MAAcd,mBAAmB,GAAG;IAClC,MAAM0C,MAAM,GAAG,MAAM,IAAI,CAAC7C,QAAQ,CAAC8C,KAAK,CAACC,KAAK,CAACC,qBAAqB,CAAC,IAAI,CAACnD,WAAW,CAACoD,QAAQ,CAAC;IAE/F,MAAMC,SAAS,GAAG,MAAM,IAAI,CAAClD,QAAQ,CAAC8C,KAAK,CAACK,QAAQ,CAACN,MAAM,CAAC;IAC5D,IAAIA,MAAM,CAACO,SAAS,EAAE,EAAE;MACtB,MAAM,IAAI,CAACC,mCAAmC,EAAE;IAClD,CAAC,MAAM,IAAIH,SAAS,EAAE;MACpB,IAAI,CAACI,iCAAiC,CAACJ,SAAS,CAAC;IACnD,CAAC,MAAM;MACL,MAAM,IAAI,CAACK,kCAAkC,CAACV,MAAM,CAAC;IACvD;EACF;EAEA,MAAcU,kCAAkC,CAACC,YAAoB,EAAE;IACrE,IAAI,CAACC,cAAc,GAAGD,YAAY;IAClC,IAAI,CAAC5D,MAAM,CAAC8D,KAAK,CAAE,qDAAoDF,YAAY,CAACG,QAAQ,EAAG,EAAC,CAAC;IACjG,IAAI,IAAI,CAAC3D,QAAQ,CAAC4D,gBAAgB,EAAE,CAACC,OAAO,CAACL,YAAY,CAAC,EAAE;MAC1D,MAAM,KAAIM,oBAAQ,EAAE,2BAA0BN,YAAY,CAACG,QAAQ,EAAG,GAAE,CAAC;IAC3E;IACA,MAAMI,UAAU,GAAG,MAAM,IAAI,CAAChE,KAAK,CAACiE,0BAA0B,CAACR,YAAY,CAAC;IAC5E,IAAI,CAAC3D,WAAW,CAACoD,QAAQ,GAAGO,YAAY,CAACS,IAAI;IAC7C,IAAI,CAACpE,WAAW,CAACqE,GAAG,GAAGH,UAAU,CAACnB,UAAU,CAACvB,GAAG,CAAE8C,CAAC,IAAKA,CAAC,CAACrD,EAAE,CAACsD,aAAa,CAACD,CAAC,CAACE,IAAI,CAACV,QAAQ,EAAE,CAAC,CAAC;IAC9F,IAAI,CAAC9D,WAAW,CAACyE,gBAAgB,GAAG,IAAI,CAACtE,QAAQ,CAAC8C,KAAK,CAACC,KAAK,CAACwB,gBAAgB,CAACf,YAAY,CAAC,IAAIgB,SAAS;IACzG,IAAI,CAAC3E,WAAW,CAACkE,UAAU,GAAGA,UAAU;IACxC,IAAI,CAACU,cAAc,GAAGV,UAAU;IAChC,IAAI,CAACnE,MAAM,CAAC8D,KAAK,CAAE,+CAA8C,CAAC;EACpE;EAEA,MAAcL,mCAAmC,GAAG;IAClD,IAAI,CAAC,IAAI,CAACrD,QAAQ,CAAC0E,QAAQ,EAAE,EAAE;MAC7B,MAAM,KAAIZ,oBAAQ,EAAE,2BAA0B,IAAI,CAACjE,WAAW,CAACoD,QAAS,GAAE,CAAC;IAC7E;IACA,IAAI,CAACpD,WAAW,CAACqE,GAAG,GAAG,MAAM,IAAI,CAAClE,QAAQ,CAAC2E,mBAAmB,EAAE;IAChE,IAAI,CAAClB,cAAc,GAAGmB,gBAAM,CAACC,IAAI,CAACC,sBAAY,EAAE,IAAI,CAAC9E,QAAQ,CAAC8C,KAAK,CAACmB,IAAI,CAAC;EAC3E;EAEQX,iCAAiC,CAACJ,SAAe,EAAE;IACzD,IAAI,IAAI,CAAClD,QAAQ,CAAC4D,gBAAgB,EAAE,CAACK,IAAI,KAAK,IAAI,CAACpE,WAAW,CAACoD,QAAQ,EAAE;MACvE,MAAM,KAAIa,oBAAQ,EAAE,2BAA0B,IAAI,CAACjE,WAAW,CAACoD,QAAS,GAAE,CAAC;IAC7E;IACA,IAAI,CAACpD,WAAW,CAACqE,GAAG,GAAGhB,SAAS,CAACN,UAAU,CAACvB,GAAG,CAAEU,CAAC,IAAKA,CAAC,CAACjB,EAAE,CAACsD,aAAa,CAACrC,CAAC,CAACsC,IAAI,CAACV,QAAQ,EAAE,CAAC,CAAC;IAC7F,IAAI,CAACF,cAAc,GAAGP,SAAS,CAAC6B,QAAQ,EAAE;IAC1C,IAAI,CAACN,cAAc,GAAGvB,SAAS;EACjC;EAEA,MAAc7C,sBAAsB,GAA+B;IACjE,MAAM;MAAE6D;IAAI,CAAC,GAAG,IAAI,CAACrE,WAAW;IAChC,MAAMmF,GAAG,GAAG,KAAIC,mBAAG,EAAC,IAAI,CAACjF,QAAQ,CAAC8C,KAAK,CAAC;IACxC,IAAI;MACF,MAAMoC,iBAAiB,GAAIhB,GAAG,CAAa7C,GAAG,CAAEP,EAAE,IAAKqE,kBAAkB,CAAC,IAAI,CAACnF,QAAQ,EAAEc,EAAE,EAAE,IAAI,CAACjB,WAAW,CAAC,CAAC;MAC/G,MAAMuF,gBAAgB,GAAG,MAAMC,OAAO,CAACC,GAAG,CAACJ,iBAAiB,CAAC;MAC7D,MAAMF,GAAG,CAACO,KAAK,EAAE;MACjB;MACA,OAAOH,gBAAgB;IACzB,CAAC,CAAC,OAAOI,GAAQ,EAAE;MACjB,MAAMR,GAAG,CAACO,KAAK,EAAE;MACjB,MAAMC,GAAG;IACX;EACF;EAEA,MAAc3D,aAAa,GAAG;IAAA;IAC5B,MAAM4D,aAAa,GAAG,IAAI,CAAC5F,WAAW,CAAC6F,KAAK,IAAI,IAAI,CAACjC,cAAc,CAACQ,IAAI;IACxE,IAAI,IAAI,CAACpE,WAAW,CAACkE,UAAU,EAAE;MAC/B,IAAI,CAAC,IAAI,CAAClE,WAAW,CAACyE,gBAAgB,EAAE;QACtC,IAAI,CAACtE,QAAQ,CAAC8C,KAAK,CAACC,KAAK,CAAC4C,SAAS,CAAC;UAClCzC,SAAS,EAAEuC,aAAa;UACxB1B,UAAU,EAAE,IAAI,CAACN,cAAc,CAACQ,IAAI;UACpC2B,WAAW,EAAE,IAAI,CAACnC,cAAc,CAACX;QACnC,CAAC,CAAC;MACJ;IACF;IAEA,IAAI,CAAC9C,QAAQ,CAAC6F,cAAc,CAAC,IAAI,CAACpC,cAAc,EAAE,0BAAC,IAAI,CAACgB,cAAc,iDAAnB,qBAAqBqB,KAAK,EAAC;IAC9E,IAAI,CAAC9F,QAAQ,CAAC+F,MAAM,CAACC,aAAa,CAAC,IAAI,CAACvB,cAAc,CAAC;EACzD;AACF;AAAC;AAED,eAAeU,kBAAkB,CAACnF,QAAkB,EAAEc,EAAS,EAAEjB,WAAwB,EAA4B;EACnH,MAAMsB,eAAgC,GAAG;IAAEL;EAAG,CAAC;EAC/C,MAAMmF,aAAa,GAAG,CAACC,GAAW,EAAE5E,qBAAqB,GAAG,KAAK,KAAK;IACpEH,eAAe,CAACC,cAAc,GAAG8E,GAAG;IACpC/E,eAAe,CAACG,qBAAqB,GAAGA,qBAAqB;IAC7D,OAAOH,eAAe;EACxB,CAAC;EACD,MAAMgF,cAAc,GAAG,MAAMnG,QAAQ,CAAC8C,KAAK,CAACsD,wBAAwB,CAACtF,EAAE,CAAC;EACxE,IAAI,CAACqF,cAAc,EAAE;IACnB,OAAOF,aAAa,CAAE,aAAYnF,EAAE,CAAC6C,QAAQ,EAAG,qBAAoB,EAAE,IAAI,CAAC;EAC7E;EACA,MAAM0C,QAAQ,GAAGrG,QAAQ,CAAC8C,KAAK,CAACwD,OAAO,CAACC,kBAAkB,CAACC,QAAQ,CAAC1F,EAAE,CAACmD,IAAI,CAAC;EAC5E,IAAIoC,QAAQ,EAAE;IACZ,OAAOJ,aAAa,CACjB,aAAYnF,EAAE,CAACC,sBAAsB,EAAG,0FAAyF,CACnI;EACH;EACA,MAAM0F,OAAO,GAAG3F,EAAE,CAAC2F,OAAO;EAC1B,IAAI,CAACA,OAAO,EAAE;IACZ,OAAOR,aAAa,CAAE,uCAAsCnB,sBAAa,EAAC,EAAE,IAAI,CAAC;EACnF;EACA,MAAM4B,gBAAgB,GAAG1G,QAAQ,CAAC+F,MAAM,CAACY,eAAe,CAAC7F,EAAE,EAAE;IAAE8F,aAAa,EAAE;EAAK,CAAC,CAAC;EACrF,MAAMC,eAAwB,GAAG,MAAMV,cAAc,CAACW,WAAW,CAACL,OAAO,EAAEzG,QAAQ,CAAC8C,KAAK,CAACwD,OAAO,CAAC;EAClG,IAAIO,eAAe,CAACE,SAAS,EAAE,EAAE;IAC/B,OAAOd,aAAa,CAAE,4BAA2B,EAAE,IAAI,CAAC;EAC1D;EACA,IAAI,CAACS,gBAAgB,EAAE;IACrB,IAAI7G,WAAW,CAACmH,uBAAuB,EAAE;MACvC,OAAOf,aAAa,CAAE,aAAYnF,EAAE,CAACC,sBAAsB,EAAG,0BAAyB,EAAE,IAAI,CAAC;IAChG;IACA,OAAO;MAAEW,eAAe,EAAE8C,SAAS;MAAEyC,kBAAkB,EAAEJ,eAAe;MAAE/F,EAAE;MAAEL,YAAY,EAAE;IAAK,CAAC;EACpG;EACA,IAAI,CAACiG,gBAAgB,CAACQ,UAAU,EAAE,EAAE;IAClC;IACA;IACA;IACA,OAAO;MAAExF,eAAe,EAAE8C,SAAS;MAAEyC,kBAAkB,EAAEJ,eAAe;MAAE/F,EAAE;MAAEL,YAAY,EAAE;IAAK,CAAC;EACpG;EACA,MAAM0G,oBAAoB,GAAGT,gBAAgB,CAACD,OAAO;EACrD,IAAIU,oBAAoB,KAAKV,OAAO,EAAE;IACpC,OAAOR,aAAa,CAAE,aAAYnF,EAAE,CAACC,sBAAsB,EAAG,0BAAyB0F,OAAQ,EAAC,EAAE,IAAI,CAAC;EACzG;EACA;EACA,MAAMW,aAAsB,GAAG,MAAMjB,cAAc,CAACW,WAAW,CAACK,oBAAoB,EAAEnH,QAAQ,CAAC8C,KAAK,CAACwD,OAAO,CAAC;EAC7G,MAAM9F,SAAS,GAAG,MAAMR,QAAQ,CAACqH,aAAa,CAACX,gBAAgB,CAAC;EAChE;EACA;EACA,MAAMY,UAAU,GAAG,MAAMtH,QAAQ,CAACuH,6BAA6B,CAACH,aAAa,EAAE5G,SAAS,CAAC;EACzF,IAAIC,YAAqD;EACzD,MAAM+G,gBAAgB,GAAG,MAAM;IAC7B,MAAMnD,IAAI,GAAG8B,cAAc,CAACsB,OAAO,EAAE;IACrC,IAAI,CAACpD,IAAI,EAAE,OAAO,KAAK;IACvB,IAAI,CAACqC,gBAAgB,CAACD,OAAO,EAAE,OAAO,KAAK;IAC3C,MAAMiB,UAAU,GAAGvB,cAAc,CAACwB,mBAAmB,CAACtD,IAAI,CAAC;IAC3D,MAAMuD,WAAW,GAAGF,UAAU,IAAIrD,IAAI,CAACV,QAAQ,EAAE;IACjD,OAAO+C,gBAAgB,CAACD,OAAO,KAAKmB,WAAW;EACjD,CAAC;EACD,IAAIN,UAAU,EAAE;IACd,IAAI,CAACE,gBAAgB,EAAE,EAAE;MACvB,MAAM,KAAI3G,uBAAY,EACnB,sBAAqBC,EAAE,CAACC,sBAAsB,EAAG,yDAAwD,CAC3G;IACH;IAEA,MAAM8G,cAAuB,GAAG,MAAM1B,cAAc,CAACW,WAAW,CAC9DJ,gBAAgB,CAACD,OAAO;IAAY;IACpCzG,QAAQ,CAAC8C,KAAK,CAACwD,OAAO,CACvB;IACD7F,YAAY,GAAG,MAAM,IAAAqH,wBAAa,EAAC;MACjC9H,QAAQ;MACR6H,cAAc;MACdE,UAAU,EAAEtB,OAAO;MACnBuB,gBAAgB,EAAExH,SAAS;MAC3ByH,YAAY,EAAG,GAAEd,oBAAqB,WAAU;MAChDC;IACF,CAAC,CAAC;EACJ;EACA;EACA,OAAO;IAAE1F,eAAe,EAAElB,SAAS;IAAEyG,kBAAkB,EAAEJ,eAAe;IAAE/F,EAAE;IAAEL;EAAa,CAAC;AAC9F"}
@@ -1,46 +1,33 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  require("core-js/modules/es.array.iterator.js");
6
-
7
5
  require("core-js/modules/es.promise.js");
8
-
9
6
  Object.defineProperty(exports, "__esModule", {
10
7
  value: true
11
8
  });
12
9
  exports.SwitchCmd = void 0;
13
-
14
10
  function _defineProperty2() {
15
11
  const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
-
17
12
  _defineProperty2 = function () {
18
13
  return data;
19
14
  };
20
-
21
15
  return data;
22
16
  }
23
-
24
17
  function _chalk() {
25
18
  const data = _interopRequireDefault(require("chalk"));
26
-
27
19
  _chalk = function () {
28
20
  return data;
29
21
  };
30
-
31
22
  return data;
32
23
  }
33
-
34
24
  function _mergeVersion() {
35
25
  const data = require("@teambit/legacy/dist/consumer/versions-ops/merge-version");
36
-
37
26
  _mergeVersion = function () {
38
27
  return data;
39
28
  };
40
-
41
29
  return data;
42
30
  }
43
-
44
31
  class SwitchCmd {
45
32
  constructor(lanes) {
46
33
  this.lanes = lanes;
@@ -51,7 +38,6 @@ class SwitchCmd {
51
38
  (0, _defineProperty2().default)(this, "options", [['n', 'alias <string>', 'relevant when the specified lane is a remote late. name a local lane differently than the remote lane'], ['m', 'merge [strategy]', 'merge local changes with the checked out version. strategy should be "theirs", "ours" or "manual"'], ['a', 'get-all', 'checkout all components in a lane include ones that do not exist in the workspace'], ['', 'skip-dependency-installation', 'do not install packages of the imported components'], ['j', 'json', 'return the output as JSON']]);
52
39
  (0, _defineProperty2().default)(this, "loader", true);
53
40
  }
54
-
55
41
  async report([lane], {
56
42
  alias,
57
43
  merge,
@@ -68,14 +54,12 @@ class SwitchCmd {
68
54
  getAll,
69
55
  skipDependencyInstallation
70
56
  });
71
-
72
57
  if (json) {
73
58
  return JSON.stringify({
74
59
  components,
75
60
  failedComponents
76
61
  }, null, 4);
77
62
  }
78
-
79
63
  const getFailureOutput = () => {
80
64
  if (!failedComponents || !failedComponents.length) return '';
81
65
  const title = 'the switch has been canceled on the following component(s)';
@@ -85,31 +69,24 @@ class SwitchCmd {
85
69
  }).join('\n');
86
70
  return `${title}\n${body}\n\n`;
87
71
  };
88
-
89
72
  const getSuccessfulOutput = () => {
90
73
  const laneSwitched = _chalk().default.green(`\nsuccessfully set "${_chalk().default.bold(lane)}" as the active lane`);
91
-
92
74
  if (!components || !components.length) return `No component had been changed.${laneSwitched}`;
93
-
94
75
  if (components.length === 1) {
95
76
  const component = components[0];
96
77
  const componentName = component.id.toStringWithoutVersion();
97
78
  const title = `successfully switched ${_chalk().default.bold(componentName)} to version ${_chalk().default.bold(component.id.version)}\n`;
98
79
  return `${title} ${(0, _mergeVersion().applyVersionReport)(components, false)}${laneSwitched}`;
99
80
  }
100
-
101
81
  const title = `successfully switched the following components to the version of ${lane}\n\n`;
102
82
  const componentsStr = (0, _mergeVersion().applyVersionReport)(components, true, false);
103
83
  return title + componentsStr + laneSwitched;
104
84
  };
105
-
106
85
  const failedOutput = getFailureOutput();
107
86
  const successOutput = getSuccessfulOutput();
108
87
  return failedOutput + successOutput;
109
88
  }
110
-
111
89
  }
112
-
113
90
  exports.SwitchCmd = SwitchCmd;
114
91
 
115
92
  //# sourceMappingURL=switch.cmd.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["SwitchCmd","constructor","lanes","report","lane","alias","merge","getAll","skipDependencyInstallation","json","components","failedComponents","switchLanes","JSON","stringify","getFailureOutput","length","title","body","map","failedComponent","color","unchangedLegitimately","chalk","bold","id","toString","failureMessage","join","getSuccessfulOutput","laneSwitched","green","component","componentName","toStringWithoutVersion","version","applyVersionReport","componentsStr","failedOutput","successOutput"],"sources":["switch.cmd.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { Command, CommandOptions } from '@teambit/cli';\nimport { MergeStrategy, applyVersionReport } from '@teambit/legacy/dist/consumer/versions-ops/merge-version';\nimport { LanesMain } from './lanes.main.runtime';\n\nexport class SwitchCmd implements Command {\n name = 'switch <lane>';\n description = `switch to the specified lane`;\n private = true;\n alias = '';\n options = [\n [\n 'n',\n 'alias <string>',\n 'relevant when the specified lane is a remote late. name a local lane differently than the remote lane',\n ],\n [\n 'm',\n 'merge [strategy]',\n 'merge local changes with the checked out version. strategy should be \"theirs\", \"ours\" or \"manual\"',\n ],\n ['a', 'get-all', 'checkout all components in a lane include ones that do not exist in the workspace'],\n ['', 'skip-dependency-installation', 'do not install packages of the imported components'],\n ['j', 'json', 'return the output as JSON'],\n ] as CommandOptions;\n loader = true;\n\n constructor(private lanes: LanesMain) {}\n\n async report(\n [lane]: [string],\n {\n alias,\n merge,\n getAll = false,\n skipDependencyInstallation = false,\n json = false,\n }: {\n alias?: string;\n merge?: MergeStrategy;\n getAll?: boolean;\n skipDependencyInstallation?: boolean;\n override?: boolean;\n json?: boolean;\n }\n ) {\n const { components, failedComponents } = await this.lanes.switchLanes(lane, {\n alias,\n merge,\n getAll,\n skipDependencyInstallation,\n });\n if (json) {\n return JSON.stringify({ components, failedComponents }, null, 4);\n }\n const getFailureOutput = () => {\n if (!failedComponents || !failedComponents.length) return '';\n const title = 'the switch has been canceled on the following component(s)';\n const body = failedComponents\n .map((failedComponent) => {\n const color = failedComponent.unchangedLegitimately ? 'white' : 'red';\n return `${chalk.bold(failedComponent.id.toString())} - ${chalk[color](failedComponent.failureMessage)}`;\n })\n .join('\\n');\n return `${title}\\n${body}\\n\\n`;\n };\n const getSuccessfulOutput = () => {\n const laneSwitched = chalk.green(`\\nsuccessfully set \"${chalk.bold(lane)}\" as the active lane`);\n if (!components || !components.length) return `No component had been changed.${laneSwitched}`;\n if (components.length === 1) {\n const component = components[0];\n const componentName = component.id.toStringWithoutVersion();\n const title = `successfully switched ${chalk.bold(componentName)} to version ${chalk.bold(\n component.id.version as string\n )}\\n`;\n return `${title} ${applyVersionReport(components, false)}${laneSwitched}`;\n }\n const title = `successfully switched the following components to the version of ${lane}\\n\\n`;\n const componentsStr = applyVersionReport(components, true, false);\n return title + componentsStr + laneSwitched;\n };\n const failedOutput = getFailureOutput();\n const successOutput = getSuccessfulOutput();\n return failedOutput + successOutput;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["SwitchCmd","constructor","lanes","report","lane","alias","merge","getAll","skipDependencyInstallation","json","components","failedComponents","switchLanes","JSON","stringify","getFailureOutput","length","title","body","map","failedComponent","color","unchangedLegitimately","chalk","bold","id","toString","failureMessage","join","getSuccessfulOutput","laneSwitched","green","component","componentName","toStringWithoutVersion","version","applyVersionReport","componentsStr","failedOutput","successOutput"],"sources":["switch.cmd.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { Command, CommandOptions } from '@teambit/cli';\nimport { MergeStrategy, applyVersionReport } from '@teambit/legacy/dist/consumer/versions-ops/merge-version';\nimport { LanesMain } from './lanes.main.runtime';\n\nexport class SwitchCmd implements Command {\n name = 'switch <lane>';\n description = `switch to the specified lane`;\n private = true;\n alias = '';\n options = [\n [\n 'n',\n 'alias <string>',\n 'relevant when the specified lane is a remote late. name a local lane differently than the remote lane',\n ],\n [\n 'm',\n 'merge [strategy]',\n 'merge local changes with the checked out version. strategy should be \"theirs\", \"ours\" or \"manual\"',\n ],\n ['a', 'get-all', 'checkout all components in a lane include ones that do not exist in the workspace'],\n ['', 'skip-dependency-installation', 'do not install packages of the imported components'],\n ['j', 'json', 'return the output as JSON'],\n ] as CommandOptions;\n loader = true;\n\n constructor(private lanes: LanesMain) {}\n\n async report(\n [lane]: [string],\n {\n alias,\n merge,\n getAll = false,\n skipDependencyInstallation = false,\n json = false,\n }: {\n alias?: string;\n merge?: MergeStrategy;\n getAll?: boolean;\n skipDependencyInstallation?: boolean;\n override?: boolean;\n json?: boolean;\n }\n ) {\n const { components, failedComponents } = await this.lanes.switchLanes(lane, {\n alias,\n merge,\n getAll,\n skipDependencyInstallation,\n });\n if (json) {\n return JSON.stringify({ components, failedComponents }, null, 4);\n }\n const getFailureOutput = () => {\n if (!failedComponents || !failedComponents.length) return '';\n const title = 'the switch has been canceled on the following component(s)';\n const body = failedComponents\n .map((failedComponent) => {\n const color = failedComponent.unchangedLegitimately ? 'white' : 'red';\n return `${chalk.bold(failedComponent.id.toString())} - ${chalk[color](failedComponent.failureMessage)}`;\n })\n .join('\\n');\n return `${title}\\n${body}\\n\\n`;\n };\n const getSuccessfulOutput = () => {\n const laneSwitched = chalk.green(`\\nsuccessfully set \"${chalk.bold(lane)}\" as the active lane`);\n if (!components || !components.length) return `No component had been changed.${laneSwitched}`;\n if (components.length === 1) {\n const component = components[0];\n const componentName = component.id.toStringWithoutVersion();\n const title = `successfully switched ${chalk.bold(componentName)} to version ${chalk.bold(\n component.id.version as string\n )}\\n`;\n return `${title} ${applyVersionReport(components, false)}${laneSwitched}`;\n }\n const title = `successfully switched the following components to the version of ${lane}\\n\\n`;\n const componentsStr = applyVersionReport(components, true, false);\n return title + componentsStr + laneSwitched;\n };\n const failedOutput = getFailureOutput();\n const successOutput = getSuccessfulOutput();\n return failedOutput + successOutput;\n }\n}\n"],"mappings":"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"}