@teambit/config-merger 0.0.138 → 0.0.140

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.
@@ -0,0 +1,13 @@
1
+ import { PkgEntry } from './config-merger.main.runtime';
2
+ export declare class AggregatedDeps {
3
+ private deps;
4
+ push(pkg: PkgEntry, compIdStr: string): void;
5
+ get depsNames(): string[];
6
+ getCompIdsBy(pkgName: string): string[];
7
+ hasSameVersions(pkgName: string): boolean;
8
+ getFirstVersion(pkgName: string): string;
9
+ reportMultipleVersions(pkgName: string): string;
10
+ toString(): string;
11
+ private getVersionStr;
12
+ private getCompIdsPerVersion;
13
+ }
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.AggregatedDeps = void 0;
7
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
9
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
10
+ class AggregatedDeps {
11
+ constructor() {
12
+ _defineProperty(this, "deps", {});
13
+ }
14
+ push(pkg, compIdStr) {
15
+ if (pkg.force) return; // we only care about auto-detected dependencies
16
+ if (!this.deps[pkg.name]) this.deps[pkg.name] = [];
17
+ this.deps[pkg.name].push({
18
+ compIdStr: compIdStr,
19
+ version: pkg.version
20
+ });
21
+ }
22
+ get depsNames() {
23
+ return Object.keys(this.deps);
24
+ }
25
+ getCompIdsBy(pkgName) {
26
+ return this.deps[pkgName].map(dep => dep.compIdStr);
27
+ }
28
+ hasSameVersions(pkgName) {
29
+ const versions = this.deps[pkgName].map(dep => dep.version);
30
+ return versions.every(v => v === versions[0]);
31
+ }
32
+ getFirstVersion(pkgName) {
33
+ return this.deps[pkgName][0].version;
34
+ }
35
+ reportMultipleVersions(pkgName) {
36
+ const compIdsPerVersion = this.getCompIdsPerVersion(pkgName);
37
+ const versions = Object.keys(compIdsPerVersion);
38
+ const multipleVerStr = versions.map(version => {
39
+ const compIds = compIdsPerVersion[version];
40
+ const compIdsStr = compIds.length > 1 ? `${compIds[0]} and ${compIds.length - 1} more` : compIds[0];
41
+ return `${this.getVersionStr(version)} (by ${compIdsStr})`;
42
+ }).join(', ');
43
+ return `multiple versions found. ${multipleVerStr}`;
44
+ }
45
+ toString() {
46
+ return JSON.stringify(this.deps, null, 2);
47
+ }
48
+ getVersionStr(version) {
49
+ if (version.includes('::')) {
50
+ // in case of a conflict, the version is in a format of CONFLICT::OURS::THEIRS
51
+ const [,, otherVal] = version.split('::');
52
+ return otherVal;
53
+ }
54
+ return version;
55
+ }
56
+ getCompIdsPerVersion(pkgName) {
57
+ const compIdsPerVersion = {};
58
+ this.deps[pkgName].forEach(dep => {
59
+ if (!compIdsPerVersion[dep.version]) compIdsPerVersion[dep.version] = [];
60
+ compIdsPerVersion[dep.version].push(dep.compIdStr);
61
+ });
62
+ return compIdsPerVersion;
63
+ }
64
+ }
65
+ exports.AggregatedDeps = AggregatedDeps;
66
+
67
+ //# sourceMappingURL=aggregated-deps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AggregatedDeps","constructor","_defineProperty","push","pkg","compIdStr","force","deps","name","version","depsNames","Object","keys","getCompIdsBy","pkgName","map","dep","hasSameVersions","versions","every","v","getFirstVersion","reportMultipleVersions","compIdsPerVersion","getCompIdsPerVersion","multipleVerStr","compIds","compIdsStr","length","getVersionStr","join","toString","JSON","stringify","includes","otherVal","split","forEach","exports"],"sources":["aggregated-deps.ts"],"sourcesContent":["import { PkgEntry } from './config-merger.main.runtime';\n\ntype UsedBy = { compIdStr: string; version: string };\n\ntype Deps = { [depId: string]: UsedBy[] };\n\nexport class AggregatedDeps {\n private deps: Deps = {};\n\n push(pkg: PkgEntry, compIdStr: string) {\n if (pkg.force) return; // we only care about auto-detected dependencies\n if (!this.deps[pkg.name]) this.deps[pkg.name] = [];\n this.deps[pkg.name].push({ compIdStr: compIdStr, version: pkg.version });\n }\n\n get depsNames(): string[] {\n return Object.keys(this.deps);\n }\n\n getCompIdsBy(pkgName: string): string[] {\n return this.deps[pkgName].map((dep) => dep.compIdStr);\n }\n\n hasSameVersions(pkgName: string): boolean {\n const versions = this.deps[pkgName].map((dep) => dep.version);\n return versions.every((v) => v === versions[0]);\n }\n\n getFirstVersion(pkgName: string): string {\n return this.deps[pkgName][0].version;\n }\n\n reportMultipleVersions(pkgName: string): string {\n const compIdsPerVersion = this.getCompIdsPerVersion(pkgName);\n const versions = Object.keys(compIdsPerVersion);\n const multipleVerStr = versions\n .map((version) => {\n const compIds = compIdsPerVersion[version];\n const compIdsStr = compIds.length > 1 ? `${compIds[0]} and ${compIds.length - 1} more` : compIds[0];\n return `${this.getVersionStr(version)} (by ${compIdsStr})`;\n })\n .join(', ');\n return `multiple versions found. ${multipleVerStr}`;\n }\n\n toString(): string {\n return JSON.stringify(this.deps, null, 2);\n }\n\n private getVersionStr(version: string): string {\n if (version.includes('::')) {\n // in case of a conflict, the version is in a format of CONFLICT::OURS::THEIRS\n const [, , otherVal] = version.split('::');\n return otherVal;\n }\n return version;\n }\n\n private getCompIdsPerVersion(pkgName: string): { [version: string]: string[] } {\n const compIdsPerVersion: { [version: string]: string[] } = {};\n this.deps[pkgName].forEach((dep) => {\n if (!compIdsPerVersion[dep.version]) compIdsPerVersion[dep.version] = [];\n compIdsPerVersion[dep.version].push(dep.compIdStr);\n });\n return compIdsPerVersion;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -4,6 +4,11 @@ import { Logger, LoggerMain } from '@teambit/logger';
4
4
  import ConsumerComponent from '@teambit/legacy/dist/consumer/component';
5
5
  import { ConfigMain } from '@teambit/config';
6
6
  import { ConfigMergeResult } from './config-merge-result';
7
+ export type PkgEntry = {
8
+ name: string;
9
+ version: string;
10
+ force: boolean;
11
+ };
7
12
  export type WorkspaceDepsUpdates = {
8
13
  [pkgName: string]: [string, string];
9
14
  };
@@ -11,9 +16,13 @@ export type WorkspaceDepsConflicts = Record<WorkspacePolicyConfigKeysNames, Arra
11
16
  name: string;
12
17
  version: string;
13
18
  }>>;
19
+ export type WorkspaceDepsUnchanged = {
20
+ [pkgName: string]: string;
21
+ };
14
22
  export type WorkspaceConfigUpdateResult = {
15
23
  workspaceDepsUpdates?: WorkspaceDepsUpdates;
16
24
  workspaceDepsConflicts?: WorkspaceDepsConflicts;
25
+ workspaceDepsUnchanged?: WorkspaceDepsUnchanged;
17
26
  workspaceConfigConflictWriteError?: Error;
18
27
  logs?: string[];
19
28
  };
@@ -29,6 +38,7 @@ export declare class ConfigMergerMain {
29
38
  updateWorkspaceJsoncWithDepsIfNeeded(allConfigMerge: ConfigMergeResult[]): Promise<{
30
39
  workspaceDepsUpdates?: WorkspaceDepsUpdates;
31
40
  workspaceDepsConflicts?: WorkspaceDepsConflicts;
41
+ workspaceDepsUnchanged?: WorkspaceDepsUnchanged;
32
42
  }>;
33
43
  updateDepsInWorkspaceConfig(components: ConsumerComponent[]): Promise<WorkspaceConfigUpdateResult | undefined>;
34
44
  private updateWsConfigWithGivenChanges;
@@ -109,6 +109,13 @@ function _configMerger() {
109
109
  };
110
110
  return data;
111
111
  }
112
+ function _aggregatedDeps() {
113
+ const data = require("./aggregated-deps");
114
+ _aggregatedDeps = function () {
115
+ return data;
116
+ };
117
+ return data;
118
+ }
112
119
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
113
120
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
114
121
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
@@ -117,6 +124,7 @@ const WS_DEPS_FIELDS = ['dependencies', 'peerDependencies'];
117
124
 
118
125
  // from => to
119
126
  // the pkg value is in a format of CONFLICT::OURS::THEIRS
127
+ // the pkg value is the message why it wasn't updated
120
128
 
121
129
  class ConfigMergerMain {
122
130
  constructor(workspace, logger, config, depsResolver) {
@@ -215,49 +223,31 @@ see the conflicts below and edit your workspace.jsonc as you see fit.`;
215
223
  const allResults = allConfigMerge.map(c => c.getDepsResolverResult());
216
224
 
217
225
  // aggregate all dependencies that can be updated (not conflicting)
218
- const nonConflictDeps = {};
219
- const nonConflictSources = {}; // for logging/debugging purposes
226
+ const nonConflictDeps = new (_aggregatedDeps().AggregatedDeps)();
220
227
  allConfigMerge.forEach(configMerge => {
221
228
  const mergedConfig = configMerge.getDepsResolverResult()?.mergedConfig;
222
229
  if (!mergedConfig || mergedConfig === '-') return;
223
230
  const mergedConfigPolicy = mergedConfig.policy || {};
224
231
  _constants().DEPENDENCIES_FIELDS.forEach(depField => {
225
- if (!mergedConfigPolicy[depField]) return;
226
- mergedConfigPolicy[depField].forEach(pkg => {
227
- if (pkg.force) return; // we only care about auto-detected dependencies
228
- if (nonConflictDeps[pkg.name]) {
229
- if (!nonConflictDeps[pkg.name].includes(pkg.version)) nonConflictDeps[pkg.name].push(pkg.version);
230
- nonConflictSources[pkg.name].push(configMerge.compIdStr);
231
- return;
232
- }
233
- nonConflictDeps[pkg.name] = [pkg.version];
234
- nonConflictSources[pkg.name] = [configMerge.compIdStr];
235
- });
232
+ mergedConfigPolicy[depField]?.forEach(pkg => nonConflictDeps.push(pkg, configMerge.compIdStr));
236
233
  });
237
234
  });
238
235
 
239
236
  // aggregate all dependencies that have conflicts
240
- const conflictDeps = {};
241
- const conflictDepsSources = {}; // for logging/debugging purposes
237
+ const conflictDeps = new (_aggregatedDeps().AggregatedDeps)();
242
238
  allConfigMerge.forEach(configMerge => {
243
239
  const mergedConfigConflict = configMerge.getDepsResolverResult()?.conflict;
244
240
  if (!mergedConfigConflict) return;
245
241
  _constants().DEPENDENCIES_FIELDS.forEach(depField => {
246
- if (!mergedConfigConflict[depField]) return;
247
- mergedConfigConflict[depField].forEach(pkg => {
248
- if (pkg.force) return; // we only care about auto-detected dependencies
249
- if (conflictDeps[pkg.name]) {
250
- if (!conflictDeps[pkg.name].includes(pkg.version)) conflictDeps[pkg.name].push(pkg.version);
251
- conflictDepsSources[pkg.name].push(configMerge.compIdStr);
252
- return;
253
- }
254
- conflictDeps[pkg.name] = [pkg.version];
255
- conflictDepsSources[pkg.name] = [configMerge.compIdStr];
256
- });
242
+ mergedConfigConflict[depField]?.forEach(pkg => conflictDeps.push(pkg, configMerge.compIdStr));
257
243
  });
258
244
  });
259
- const notConflictedPackages = Object.keys(nonConflictDeps);
260
- const conflictedPackages = Object.keys(conflictDeps);
245
+
246
+ // uncomment to get the aggregated deps of both the conflicted and non-conflicted
247
+ // console.log('nonConflictDeps', nonConflictDeps.toString(), 'conflictDeps', conflictDeps.toString());
248
+
249
+ const notConflictedPackages = nonConflictDeps.depsNames;
250
+ const conflictedPackages = conflictDeps.depsNames;
261
251
  if (!notConflictedPackages.length && !conflictedPackages.length) return {};
262
252
  const workspaceConfig = this.config.workspaceConfig;
263
253
  if (!workspaceConfig) throw new Error(`updateWorkspaceJsoncWithDepsIfNeeded unable to get workspace config`);
@@ -266,22 +256,25 @@ see the conflicts below and edit your workspace.jsonc as you see fit.`;
266
256
  if (!policy) {
267
257
  return {};
268
258
  }
259
+ const workspaceDepsUnchanged = {};
269
260
 
270
261
  // calculate the workspace.json updates
271
262
  const workspaceJsonUpdates = {};
272
263
  notConflictedPackages.forEach(pkgName => {
273
- if (nonConflictDeps[pkgName].length > 1) {
274
- // we only want the deps that the other lane has them in the workspace.json and that all comps use the same dep.
275
- return;
276
- }
277
264
  _constants().DEPENDENCIES_FIELDS.forEach(depField => {
278
265
  if (!policy[depField]?.[pkgName]) return; // doesn't exists in the workspace.json
279
266
  const currentVer = policy[depField][pkgName];
280
- const newVer = nonConflictDeps[pkgName][0];
267
+ if (!nonConflictDeps.hasSameVersions(pkgName)) {
268
+ // we only want the deps that the other lane has them in the workspace.json and that all comps use the same dep.
269
+ workspaceDepsUnchanged[pkgName] = nonConflictDeps.reportMultipleVersions(pkgName);
270
+ return;
271
+ }
272
+ const newVer = nonConflictDeps.getFirstVersion(pkgName);
281
273
  if (currentVer === newVer) return;
282
274
  workspaceJsonUpdates[pkgName] = [currentVer, newVer];
283
275
  policy[depField][pkgName] = newVer;
284
- this.logger.debug(`update workspace.jsonc: ${pkgName} from ${currentVer} to ${newVer}. Triggered by: ${nonConflictSources[pkgName].join(', ')}`);
276
+ const compIds = nonConflictDeps.getCompIdsBy(pkgName).join(', ');
277
+ this.logger.debug(`update workspace.jsonc: ${pkgName} from ${currentVer} to ${newVer}. Triggered by: ${compIds}`);
285
278
  });
286
279
  });
287
280
 
@@ -292,11 +285,12 @@ see the conflicts below and edit your workspace.jsonc as you see fit.`;
292
285
  };
293
286
  const conflictPackagesToRemoveFromConfigMerge = [];
294
287
  conflictedPackages.forEach(pkgName => {
295
- if (conflictDeps[pkgName].length > 1) {
288
+ if (!conflictDeps.hasSameVersions(pkgName)) {
296
289
  // we only want the deps that the other lane has them in the workspace.json and that all comps use the same dep.
290
+ workspaceDepsUnchanged[pkgName] = conflictDeps.reportMultipleVersions(pkgName);
297
291
  return;
298
292
  }
299
- const conflictRaw = conflictDeps[pkgName][0];
293
+ const conflictRaw = conflictDeps.getFirstVersion(pkgName);
300
294
  const [, currentVal, otherVal] = conflictRaw.split('::');
301
295
  // in case of a snap, the otherVal is the snap-hash, we need to convert it to semver
302
296
  const otherValValid = (0, _componentPackageVersion().snapToSemver)(otherVal);
@@ -316,7 +310,8 @@ see the conflicts below and edit your workspace.jsonc as you see fit.`;
316
310
  force: false
317
311
  });
318
312
  conflictPackagesToRemoveFromConfigMerge.push(pkgName);
319
- this.logger.debug(`conflict workspace.jsonc: ${pkgName} current: ${currentVerInWsJson}, other: ${otherValValid}. Triggered by: ${conflictDepsSources[pkgName].join(', ')}`);
313
+ const compIds = conflictDeps.getCompIdsBy(pkgName).join(', ');
314
+ this.logger.debug(`conflict workspace.jsonc: ${pkgName} current: ${currentVerInWsJson}, other: ${otherValValid}. Triggered by: ${compIds}`);
320
315
  });
321
316
  });
322
317
  WS_DEPS_FIELDS.forEach(depField => {
@@ -343,7 +338,8 @@ see the conflicts below and edit your workspace.jsonc as you see fit.`;
343
338
  this.logger.debug('final workspace.jsonc conflicts', workspaceJsonConflicts);
344
339
  return {
345
340
  workspaceDepsUpdates: Object.keys(workspaceJsonUpdates).length ? workspaceJsonUpdates : undefined,
346
- workspaceDepsConflicts: Object.keys(workspaceJsonConflicts).length ? workspaceJsonConflicts : undefined
341
+ workspaceDepsConflicts: Object.keys(workspaceJsonConflicts).length ? workspaceJsonConflicts : undefined,
342
+ workspaceDepsUnchanged: Object.keys(workspaceDepsUnchanged).length ? workspaceDepsUnchanged : undefined
347
343
  };
348
344
  }
349
345
  async updateDepsInWorkspaceConfig(components) {
@@ -1 +1 @@
1
- {"version":3,"names":["_semver","data","_interopRequireDefault","require","_lodash","_dependencyResolver","_componentPackageVersion","_tempy","_fsExtra","_cli","_workspace","_logger","_constants","_bitError","_mergeFiles","_config","_configMergeResult","_configMerger","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","r","e","Symbol","toPrimitive","call","TypeError","String","Number","WS_DEPS_FIELDS","ConfigMergerMain","constructor","workspace","logger","config","depsResolver","generateConfigMergeConflictFileForAll","allConfigMerge","configMergeFile","getConflictMergeFile","forEach","configMerge","conflict","generateMergeConflictFile","addConflict","compIdStr","hasConflict","write","writeWorkspaceJsoncWithConflictsGracefully","workspaceDepsConflicts","writeWorkspaceJsoncWithConflicts","undefined","err","error","errTitle","message","conflictsStr","map","depField","name","version","currentVal","otherVal","parseVersionLineWithConflict","flat","join","BitError","wsConfig","workspaceConfig","Error","wsJsoncPath","path","wsJsoncOriginalContent","fs","readFile","wsJsoncContent","originalDep","includes","replace","baseFilePath","tempy","otherFilePath","mergeFilesParams","filePath","currentFile","label","baseFile","otherFile","mergeResult","mergeFiles","conflictFile","debug","backupConfigFile","writeFile","updateWorkspaceJsoncWithDepsIfNeeded","allResults","c","getDepsResolverResult","nonConflictDeps","nonConflictSources","mergedConfig","mergedConfigPolicy","policy","DEPENDENCIES_FIELDS","pkg","force","push","conflictDeps","conflictDepsSources","mergedConfigConflict","notConflictedPackages","keys","conflictedPackages","length","depResolver","extensions","findCoreExtension","DependencyResolverAspect","id","workspaceJsonUpdates","pkgName","currentVer","newVer","workspaceJsonConflicts","dependencies","peerDependencies","conflictPackagesToRemoveFromConfigMerge","conflictRaw","split","otherValValid","snapToSemver","currentVerInWsJson","semver","satisfies","isEmpty","result","filter","dep","reasonForChange","workspaceDepsUpdates","updateDepsInWorkspaceConfig","components","workspacePolicy","getWorkspacePolicyFromConfig","workspacePolicyObj","entries","reduce","acc","current","dependencyId","componentDepsWithMultipleVer","component","deps","getDependenciesFromLegacyComponent","source","depId","getPackageName","compToLog","info","componentDeps","logs","depInCompVer","depInWsVer","isDepInCompVersion","Boolean","valid","isDepInCompRange","validRange","addNotUpdateToLogs","reason","isDepInWsVersion","isDepInWsRange","lifeCycle","find","d","lifecycleType","addToUpdate","addRangeFrom","potentialRangeChar","newRange","warnMsg","warn","addToConflict","gt","isRange1GreaterThanRange2Naively","wsMinVer","minVersion","compMinVer","JSON","stringify","updateWsConfigWithGivenChanges","workspaceConfigConflictWriteError","wsPolicy","getLifeCycle","newWorkspacePolicyEntries","addToRootPolicy","updateExisting","persistConfig","range1","range2","minVersion1","minVersion2","provider","loggerMain","createLogger","ConfigMergerAspect","exports","WorkspaceAspect","ConfigAspect","LoggerAspect","MainRuntime","addRuntime","_default"],"sources":["config-merger.main.runtime.ts"],"sourcesContent":["import semver from 'semver';\nimport { isEmpty } from 'lodash';\nimport {\n DependencyResolverAspect,\n DependencyResolverMain,\n WorkspacePolicy,\n WorkspacePolicyConfigKeysNames,\n WorkspacePolicyEntry,\n} from '@teambit/dependency-resolver';\nimport { snapToSemver } from '@teambit/component-package-version';\nimport tempy from 'tempy';\nimport fs from 'fs-extra';\nimport { MainRuntime } from '@teambit/cli';\nimport { WorkspaceAspect, Workspace } from '@teambit/workspace';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport ConsumerComponent from '@teambit/legacy/dist/consumer/component';\nimport { DEPENDENCIES_FIELDS } from '@teambit/legacy/dist/constants';\nimport { BitError } from '@teambit/bit-error';\nimport mergeFiles, { MergeFileParams } from '@teambit/legacy/dist/utils/merge-files';\nimport { ConfigAspect, ConfigMain } from '@teambit/config';\nimport { ConfigMergeResult, parseVersionLineWithConflict } from './config-merge-result';\nimport { ConfigMergerAspect } from './config-merger.aspect';\n\ntype PkgEntry = { name: string; version: string; force: boolean };\n\nconst WS_DEPS_FIELDS = ['dependencies', 'peerDependencies'];\n\nexport type WorkspaceDepsUpdates = { [pkgName: string]: [string, string] }; // from => to\nexport type WorkspaceDepsConflicts = Record<WorkspacePolicyConfigKeysNames, Array<{ name: string; version: string }>>; // the pkg value is in a format of CONFLICT::OURS::THEIRS\n\nexport type WorkspaceConfigUpdateResult = {\n workspaceDepsUpdates?: WorkspaceDepsUpdates; // in case workspace.jsonc has been updated with dependencies versions\n workspaceDepsConflicts?: WorkspaceDepsConflicts; // in case workspace.jsonc has conflicts\n workspaceConfigConflictWriteError?: Error; // in case workspace.jsonc has conflicts and we failed to write the conflicts to the file\n logs?: string[]; // verbose details about the updates/conflicts for each one of the deps\n};\nexport class ConfigMergerMain {\n constructor(\n private workspace: Workspace,\n private logger: Logger,\n private config: ConfigMain,\n private depsResolver: DependencyResolverMain\n ) {}\n\n async generateConfigMergeConflictFileForAll(allConfigMerge: ConfigMergeResult[]) {\n const configMergeFile = this.workspace.getConflictMergeFile();\n allConfigMerge.forEach((configMerge) => {\n const conflict = configMerge.generateMergeConflictFile();\n if (!conflict) return;\n configMergeFile.addConflict(configMerge.compIdStr, conflict);\n });\n if (configMergeFile.hasConflict()) {\n await configMergeFile.write();\n }\n }\n\n async writeWorkspaceJsoncWithConflictsGracefully(\n workspaceDepsConflicts: WorkspaceDepsConflicts\n ): Promise<Error | undefined> {\n try {\n await this.writeWorkspaceJsoncWithConflicts(workspaceDepsConflicts);\n return undefined;\n } catch (err: any) {\n this.logger.error(`unable to write workspace.jsonc with conflicts`, err);\n const errTitle = `unable to write workspace.jsonc with conflicts, due to an error: \"${err.message}\".\nsee the conflicts below and edit your workspace.jsonc as you see fit.`;\n const conflictsStr = WS_DEPS_FIELDS.map((depField) => {\n if (!workspaceDepsConflicts[depField]) return [];\n return workspaceDepsConflicts[depField].map(({ name, version }) => {\n const { currentVal, otherVal } = parseVersionLineWithConflict(version);\n return `(${depField}) ${name}: ours: ${currentVal}, theirs: ${otherVal}`;\n });\n })\n .flat()\n .join('\\n');\n return new BitError(`${errTitle}\\n${conflictsStr}`);\n }\n }\n\n private async writeWorkspaceJsoncWithConflicts(workspaceDepsConflicts: WorkspaceDepsConflicts) {\n const wsConfig = this.config.workspaceConfig;\n if (!wsConfig) throw new Error(`unable to get workspace config`);\n const wsJsoncPath = wsConfig.path;\n const wsJsoncOriginalContent = await fs.readFile(wsJsoncPath, 'utf8');\n let wsJsoncContent = wsJsoncOriginalContent;\n WS_DEPS_FIELDS.forEach((depField) => {\n if (!workspaceDepsConflicts[depField]) return;\n workspaceDepsConflicts[depField].forEach(({ name, version }) => {\n const { currentVal, otherVal } = parseVersionLineWithConflict(version);\n // e.g. \"@ci/8oypmb6p-remote.bar.foo\": \"^0.0.3\"\n const originalDep = `\"${name}\": \"${currentVal}\"`;\n if (!wsJsoncContent.includes(originalDep)) {\n throw new Error(`unable to find the dependency ${originalDep} in the workspace.jsonc`);\n }\n wsJsoncContent = wsJsoncContent.replace(originalDep, `\"${name}\": \"${otherVal}\"`);\n });\n });\n\n const baseFilePath = await tempy.write('');\n const otherFilePath = await tempy.write(wsJsoncContent);\n const mergeFilesParams: MergeFileParams = {\n filePath: wsJsoncPath,\n currentFile: {\n label: 'ours',\n path: wsJsoncPath,\n },\n baseFile: {\n path: baseFilePath,\n },\n otherFile: {\n label: 'theirs',\n path: otherFilePath,\n },\n };\n const mergeResult = await mergeFiles(mergeFilesParams);\n const conflictFile = mergeResult.conflict;\n if (!conflictFile) {\n this.logger.debug(`original content:\\n${wsJsoncOriginalContent}`);\n this.logger.debug(`new content:\\n${wsJsoncContent}`);\n throw new Error('unable to generate conflict from the workspace.jsonc file. see debug.log for the file content');\n }\n await wsConfig.backupConfigFile('before writing conflicts');\n this.logger.debug('writing workspace.jsonc with conflicts');\n await fs.writeFile(wsJsoncPath, conflictFile);\n }\n\n async updateWorkspaceJsoncWithDepsIfNeeded(\n allConfigMerge: ConfigMergeResult[]\n ): Promise<{ workspaceDepsUpdates?: WorkspaceDepsUpdates; workspaceDepsConflicts?: WorkspaceDepsConflicts }> {\n const allResults = allConfigMerge.map((c) => c.getDepsResolverResult());\n\n // aggregate all dependencies that can be updated (not conflicting)\n const nonConflictDeps: { [pkgName: string]: string[] } = {};\n const nonConflictSources: { [pkgName: string]: string[] } = {}; // for logging/debugging purposes\n allConfigMerge.forEach((configMerge) => {\n const mergedConfig = configMerge.getDepsResolverResult()?.mergedConfig;\n if (!mergedConfig || mergedConfig === '-') return;\n const mergedConfigPolicy = mergedConfig.policy || {};\n DEPENDENCIES_FIELDS.forEach((depField) => {\n if (!mergedConfigPolicy[depField]) return;\n mergedConfigPolicy[depField].forEach((pkg: PkgEntry) => {\n if (pkg.force) return; // we only care about auto-detected dependencies\n if (nonConflictDeps[pkg.name]) {\n if (!nonConflictDeps[pkg.name].includes(pkg.version)) nonConflictDeps[pkg.name].push(pkg.version);\n nonConflictSources[pkg.name].push(configMerge.compIdStr);\n return;\n }\n nonConflictDeps[pkg.name] = [pkg.version];\n nonConflictSources[pkg.name] = [configMerge.compIdStr];\n });\n });\n });\n\n // aggregate all dependencies that have conflicts\n const conflictDeps: { [pkgName: string]: string[] } = {};\n const conflictDepsSources: { [pkgName: string]: string[] } = {}; // for logging/debugging purposes\n allConfigMerge.forEach((configMerge) => {\n const mergedConfigConflict = configMerge.getDepsResolverResult()?.conflict;\n if (!mergedConfigConflict) return;\n DEPENDENCIES_FIELDS.forEach((depField) => {\n if (!mergedConfigConflict[depField]) return;\n mergedConfigConflict[depField].forEach((pkg: PkgEntry) => {\n if (pkg.force) return; // we only care about auto-detected dependencies\n if (conflictDeps[pkg.name]) {\n if (!conflictDeps[pkg.name].includes(pkg.version)) conflictDeps[pkg.name].push(pkg.version);\n conflictDepsSources[pkg.name].push(configMerge.compIdStr);\n return;\n }\n conflictDeps[pkg.name] = [pkg.version];\n conflictDepsSources[pkg.name] = [configMerge.compIdStr];\n });\n });\n });\n\n const notConflictedPackages = Object.keys(nonConflictDeps);\n const conflictedPackages = Object.keys(conflictDeps);\n if (!notConflictedPackages.length && !conflictedPackages.length) return {};\n\n const workspaceConfig = this.config.workspaceConfig;\n if (!workspaceConfig) throw new Error(`updateWorkspaceJsoncWithDepsIfNeeded unable to get workspace config`);\n const depResolver = workspaceConfig.extensions.findCoreExtension(DependencyResolverAspect.id);\n const policy = depResolver?.config.policy;\n if (!policy) {\n return {};\n }\n\n // calculate the workspace.json updates\n const workspaceJsonUpdates = {};\n notConflictedPackages.forEach((pkgName) => {\n if (nonConflictDeps[pkgName].length > 1) {\n // we only want the deps that the other lane has them in the workspace.json and that all comps use the same dep.\n return;\n }\n DEPENDENCIES_FIELDS.forEach((depField) => {\n if (!policy[depField]?.[pkgName]) return; // doesn't exists in the workspace.json\n const currentVer = policy[depField][pkgName];\n const newVer = nonConflictDeps[pkgName][0];\n if (currentVer === newVer) return;\n workspaceJsonUpdates[pkgName] = [currentVer, newVer];\n policy[depField][pkgName] = newVer;\n this.logger.debug(\n `update workspace.jsonc: ${pkgName} from ${currentVer} to ${newVer}. Triggered by: ${nonConflictSources[\n pkgName\n ].join(', ')}`\n );\n });\n });\n\n // calculate the workspace.json conflicts\n const workspaceJsonConflicts = { dependencies: [], peerDependencies: [] };\n const conflictPackagesToRemoveFromConfigMerge: string[] = [];\n conflictedPackages.forEach((pkgName) => {\n if (conflictDeps[pkgName].length > 1) {\n // we only want the deps that the other lane has them in the workspace.json and that all comps use the same dep.\n return;\n }\n const conflictRaw = conflictDeps[pkgName][0];\n const [, currentVal, otherVal] = conflictRaw.split('::');\n // in case of a snap, the otherVal is the snap-hash, we need to convert it to semver\n const otherValValid = snapToSemver(otherVal);\n WS_DEPS_FIELDS.forEach((depField) => {\n if (!policy[depField]?.[pkgName]) return;\n const currentVerInWsJson = policy[depField][pkgName];\n if (!currentVerInWsJson) return;\n // the version is coming from the workspace.jsonc\n conflictPackagesToRemoveFromConfigMerge.push(pkgName);\n if (semver.satisfies(otherValValid, currentVerInWsJson)) {\n // the other version is compatible with the current version in the workspace.json\n return;\n }\n workspaceJsonConflicts[depField].push({\n name: pkgName,\n version: conflictRaw.replace(currentVal, currentVerInWsJson),\n force: false,\n });\n conflictPackagesToRemoveFromConfigMerge.push(pkgName);\n this.logger.debug(\n `conflict workspace.jsonc: ${pkgName} current: ${currentVerInWsJson}, other: ${otherValValid}. Triggered by: ${conflictDepsSources[\n pkgName\n ].join(', ')}`\n );\n });\n });\n WS_DEPS_FIELDS.forEach((depField) => {\n if (isEmpty(workspaceJsonConflicts[depField])) delete workspaceJsonConflicts[depField];\n });\n\n if (conflictPackagesToRemoveFromConfigMerge.length) {\n allResults.forEach((result) => {\n if (result?.conflict) {\n DEPENDENCIES_FIELDS.forEach((depField) => {\n if (!result.conflict?.[depField]) return;\n result.conflict[depField] = result.conflict?.[depField].filter(\n (dep) => !conflictPackagesToRemoveFromConfigMerge.includes(dep.name)\n );\n if (!result.conflict[depField].length) delete result.conflict[depField];\n });\n if (isEmpty(result.conflict)) result.conflict = undefined;\n }\n });\n }\n\n if (Object.keys(workspaceJsonUpdates).length) {\n await workspaceConfig.write({ reasonForChange: 'merge (update dependencies)' });\n }\n\n this.logger.debug('final workspace.jsonc updates', workspaceJsonUpdates);\n this.logger.debug('final workspace.jsonc conflicts', workspaceJsonConflicts);\n\n return {\n workspaceDepsUpdates: Object.keys(workspaceJsonUpdates).length ? workspaceJsonUpdates : undefined,\n workspaceDepsConflicts: Object.keys(workspaceJsonConflicts).length ? workspaceJsonConflicts : undefined,\n };\n }\n\n async updateDepsInWorkspaceConfig(components: ConsumerComponent[]): Promise<WorkspaceConfigUpdateResult | undefined> {\n const workspacePolicy = this.depsResolver.getWorkspacePolicyFromConfig();\n const workspacePolicyObj = workspacePolicy.entries.reduce((acc, current) => {\n acc[current.dependencyId] = current.value.version;\n return acc;\n }, {});\n const componentDepsWithMultipleVer: Record<string, string[]> = {};\n components.forEach((component) => {\n const deps = this.depsResolver.getDependenciesFromLegacyComponent(component);\n deps.forEach((dep) => {\n if (dep.source !== 'auto') return;\n const depId = dep.getPackageName?.();\n if (!depId) return; // unclear when this happens.\n if (!workspacePolicyObj[depId]) return;\n if (workspacePolicyObj[depId] === dep.version) return;\n if (componentDepsWithMultipleVer[depId]?.includes(dep.version)) return;\n\n (componentDepsWithMultipleVer[depId] ||= []).push(dep.version);\n });\n });\n\n const compToLog = Object.keys(componentDepsWithMultipleVer)\n .map(\n (depId) =>\n `${depId} => workspace: ${workspacePolicyObj[depId]}, components: ${componentDepsWithMultipleVer[depId].join(\n ', '\n )}`\n )\n .join('\\n');\n this.logger.info(`found the following deps to update/conflict:\\n${compToLog}`);\n\n const componentDeps = Object.keys(componentDepsWithMultipleVer).reduce((acc, depId) => {\n // if there are different versions of this dep between the components, forget about it.\n if (componentDepsWithMultipleVer[depId].length > 1) return acc;\n acc[depId] = componentDepsWithMultipleVer[depId][0];\n return acc;\n }, {});\n\n if (isEmpty(componentDeps)) {\n return undefined;\n }\n\n const workspaceDepsUpdates: WorkspaceDepsUpdates = {};\n const workspaceDepsConflicts: WorkspaceDepsConflicts = { dependencies: [], peerDependencies: [] };\n\n const logs: string[] = [];\n\n Object.keys(componentDeps).forEach((depId) => {\n const depInCompVer: string = componentDeps[depId];\n const depInWsVer: string = workspacePolicyObj[depId];\n const isDepInCompVersion = Boolean(semver.valid(depInCompVer));\n const isDepInCompRange = !isDepInCompVersion && Boolean(semver.validRange(depInCompVer));\n\n const addNotUpdateToLogs = (reason: string) => {\n logs.push(`${depId} - not updating. ${reason}`);\n };\n\n if (!isDepInCompVersion && !isDepInCompRange) {\n addNotUpdateToLogs(`probably a snap-hash`);\n return; // probably a snap-hash.\n }\n const isDepInWsVersion = Boolean(semver.valid(depInWsVer));\n const isDepInWsRange = !isDepInWsVersion && Boolean(semver.validRange(depInWsVer));\n if (!isDepInWsVersion && !isDepInWsRange) {\n addNotUpdateToLogs(`probably a snap-hash`);\n return; // probably a snap-hash.\n }\n\n // both are either versions or ranges\n const lifeCycle =\n workspacePolicy.entries.find((d) => d.dependencyId === depId)?.lifecycleType === 'peer'\n ? 'peerDependencies'\n : 'dependencies';\n\n const addToUpdate = (addRangeFrom?: string) => {\n if (addRangeFrom) {\n // depInCompVer is a version, depInWsVer is a range\n const potentialRangeChar = depInWsVer[0];\n const newRange = potentialRangeChar + depInCompVer;\n if (newRange === depInWsVer) {\n addNotUpdateToLogs(`the min version from ws ${depInWsVer} is the same as ${depInCompVer} from comp`);\n return;\n }\n if (!semver.validRange(newRange)) {\n const warnMsg = `failed to add the range \"${potentialRangeChar}\" to ${depInCompVer}, the result is not a valid range`;\n this.logger.warn(warnMsg);\n addNotUpdateToLogs(warnMsg);\n return;\n }\n logs.push(`${depId} - updating from ${depInWsVer} to ${newRange} (new range based on ${depInCompVer})`);\n workspaceDepsUpdates[depId] = [depInWsVer, newRange];\n } else {\n logs.push(`${depId} - updating from ${depInWsVer} to ${depInCompVer}`);\n workspaceDepsUpdates[depId] = [depInWsVer, depInCompVer];\n }\n };\n const addToConflict = () => {\n workspaceDepsConflicts[lifeCycle].push({ name: depId, version: `CONFLICT::${depInWsVer}::${depInCompVer}` });\n logs.push(`${depId} - conflict. ours: ${depInWsVer}, theirs: ${depInCompVer}`);\n };\n\n // both are versions\n if (isDepInCompVersion && isDepInWsVersion) {\n if (semver.gt(depInCompVer, depInWsVer)) {\n addToConflict();\n return;\n }\n addNotUpdateToLogs(`the version from ws ${depInWsVer} is greater than ${depInCompVer} from comp`);\n return;\n }\n\n // both are ranges\n if (isDepInCompRange && isDepInWsRange) {\n if (this.isRange1GreaterThanRange2Naively(depInCompVer, depInWsVer)) {\n addToUpdate();\n return;\n }\n addNotUpdateToLogs(`the range from ws ${depInWsVer} is greater than ${depInCompVer} from comp`);\n return;\n }\n\n if (isDepInCompVersion && isDepInWsRange) {\n const wsMinVer = semver.minVersion(depInWsVer);\n if (!wsMinVer) {\n this.logger.warn(`unable to calculate the min version of ${depInWsVer}`);\n addNotUpdateToLogs(`unable to calculate the min version of ${depInWsVer} from ws`);\n return;\n }\n if (semver.gt(wsMinVer, depInCompVer)) {\n addNotUpdateToLogs(`the min version from ws ${depInWsVer} is greater than ${depInCompVer} from comp`);\n return;\n }\n if (semver.satisfies(depInCompVer, depInWsVer)) {\n addToUpdate(depInWsVer);\n return;\n }\n addToConflict();\n return;\n }\n\n if (isDepInCompRange && isDepInWsVersion) {\n if (semver.satisfies(depInWsVer, depInCompVer)) {\n addToUpdate();\n return;\n }\n const compMinVer = semver.minVersion(depInCompVer);\n if (!compMinVer) {\n this.logger.warn(`unable to calculate the min version of ${compMinVer}`);\n addNotUpdateToLogs(`unable to calculate the min version of ${compMinVer} from comp`);\n return;\n }\n if (semver.gt(compMinVer, depInWsVer)) {\n addToConflict();\n return;\n }\n addNotUpdateToLogs(`the min version from comp ${compMinVer} is less than ${depInWsVer} from ws`);\n }\n throw new Error(`unhandled case: comp: ${depInCompVer}, ws: ${depInWsVer}`);\n });\n\n WS_DEPS_FIELDS.forEach((depField) => {\n if (isEmpty(workspaceDepsConflicts[depField])) delete workspaceDepsConflicts[depField];\n });\n\n this.logger.debug(`workspace config-merge all components logs\\n${logs.join('\\n')}`);\n this.logger.debug('final workspace.jsonc updates [from, to]', workspaceDepsUpdates);\n this.logger.debug(`final workspace.jsonc conflicts ${JSON.stringify(workspaceDepsConflicts, undefined, 2)}`);\n\n await this.updateWsConfigWithGivenChanges(workspaceDepsUpdates, workspacePolicy);\n let workspaceConfigConflictWriteError: Error | undefined;\n if (!isEmpty(workspaceDepsConflicts)) {\n workspaceConfigConflictWriteError = await this.writeWorkspaceJsoncWithConflictsGracefully(workspaceDepsConflicts);\n }\n\n return {\n workspaceDepsUpdates: isEmpty(workspaceDepsUpdates) ? undefined : workspaceDepsUpdates,\n workspaceDepsConflicts: isEmpty(workspaceDepsConflicts) ? undefined : workspaceDepsConflicts,\n workspaceConfigConflictWriteError,\n logs,\n };\n }\n\n private async updateWsConfigWithGivenChanges(workspaceDepsUpdates: WorkspaceDepsUpdates, wsPolicy: WorkspacePolicy) {\n if (isEmpty(workspaceDepsUpdates)) return;\n const getLifeCycle = (depId: string) => {\n const lifeCycle = wsPolicy.entries.find((d) => d.dependencyId === depId)?.lifecycleType;\n if (!lifeCycle) throw new Error(`unable to find the lifecycle of ${depId}`);\n return lifeCycle;\n };\n\n const newWorkspacePolicyEntries: WorkspacePolicyEntry[] = Object.keys(workspaceDepsUpdates).map((pkgName) => {\n return {\n dependencyId: pkgName,\n lifecycleType: getLifeCycle(pkgName),\n value: {\n version: workspaceDepsUpdates[pkgName][1],\n },\n };\n });\n this.depsResolver.addToRootPolicy(newWorkspacePolicyEntries, {\n updateExisting: true,\n });\n await this.depsResolver.persistConfig('config-merger (update root policy)');\n }\n\n /**\n * if both versions are ranges, it's hard to check which one is bigger. sometimes it's even impossible.\n * remember that a range can be something like `1.2 <1.2.9 || >2.0.0`.\n * this check is naive in a way that it assumes the range is simple, such as \"^1.2.3\" or \"~1.2.3.\n * in this case, it's possible to check for the minimum version and compare it.\n */\n private isRange1GreaterThanRange2Naively(range1: string, range2: string) {\n const minVersion1 = semver.minVersion(range1);\n const minVersion2 = semver.minVersion(range2);\n if (!minVersion1 || !minVersion2) return false;\n return semver.gt(minVersion1, minVersion2);\n }\n\n static slots = [];\n static dependencies = [WorkspaceAspect, ConfigAspect, LoggerAspect, DependencyResolverAspect];\n static runtime = MainRuntime;\n static async provider([workspace, config, loggerMain, depsResolver]: [\n Workspace,\n ConfigMain,\n LoggerMain,\n DependencyResolverMain\n ]) {\n const logger = loggerMain.createLogger(ConfigMergerAspect.id);\n return new ConfigMergerMain(workspace, logger, config, depsResolver);\n }\n}\n\nConfigMergerAspect.addRuntime(ConfigMergerMain);\n\nexport default ConfigMergerMain;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_semver","data","_interopRequireDefault","require","_lodash","_dependencyResolver","_componentPackageVersion","_tempy","_fsExtra","_cli","_workspace","_logger","_constants","_bitError","_mergeFiles","_config","_configMergeResult","_configMerger","_aggregatedDeps","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","r","e","Symbol","toPrimitive","call","TypeError","String","Number","WS_DEPS_FIELDS","ConfigMergerMain","constructor","workspace","logger","config","depsResolver","generateConfigMergeConflictFileForAll","allConfigMerge","configMergeFile","getConflictMergeFile","forEach","configMerge","conflict","generateMergeConflictFile","addConflict","compIdStr","hasConflict","write","writeWorkspaceJsoncWithConflictsGracefully","workspaceDepsConflicts","writeWorkspaceJsoncWithConflicts","undefined","err","error","errTitle","message","conflictsStr","map","depField","name","version","currentVal","otherVal","parseVersionLineWithConflict","flat","join","BitError","wsConfig","workspaceConfig","Error","wsJsoncPath","path","wsJsoncOriginalContent","fs","readFile","wsJsoncContent","originalDep","includes","replace","baseFilePath","tempy","otherFilePath","mergeFilesParams","filePath","currentFile","label","baseFile","otherFile","mergeResult","mergeFiles","conflictFile","debug","backupConfigFile","writeFile","updateWorkspaceJsoncWithDepsIfNeeded","allResults","c","getDepsResolverResult","nonConflictDeps","AggregatedDeps","mergedConfig","mergedConfigPolicy","policy","DEPENDENCIES_FIELDS","pkg","push","conflictDeps","mergedConfigConflict","notConflictedPackages","depsNames","conflictedPackages","length","depResolver","extensions","findCoreExtension","DependencyResolverAspect","id","workspaceDepsUnchanged","workspaceJsonUpdates","pkgName","currentVer","hasSameVersions","reportMultipleVersions","newVer","getFirstVersion","compIds","getCompIdsBy","workspaceJsonConflicts","dependencies","peerDependencies","conflictPackagesToRemoveFromConfigMerge","conflictRaw","split","otherValValid","snapToSemver","currentVerInWsJson","semver","satisfies","force","isEmpty","result","filter","dep","keys","reasonForChange","workspaceDepsUpdates","updateDepsInWorkspaceConfig","components","workspacePolicy","getWorkspacePolicyFromConfig","workspacePolicyObj","entries","reduce","acc","current","dependencyId","componentDepsWithMultipleVer","component","deps","getDependenciesFromLegacyComponent","source","depId","getPackageName","compToLog","info","componentDeps","logs","depInCompVer","depInWsVer","isDepInCompVersion","Boolean","valid","isDepInCompRange","validRange","addNotUpdateToLogs","reason","isDepInWsVersion","isDepInWsRange","lifeCycle","find","d","lifecycleType","addToUpdate","addRangeFrom","potentialRangeChar","newRange","warnMsg","warn","addToConflict","gt","isRange1GreaterThanRange2Naively","wsMinVer","minVersion","compMinVer","JSON","stringify","updateWsConfigWithGivenChanges","workspaceConfigConflictWriteError","wsPolicy","getLifeCycle","newWorkspacePolicyEntries","addToRootPolicy","updateExisting","persistConfig","range1","range2","minVersion1","minVersion2","provider","loggerMain","createLogger","ConfigMergerAspect","exports","WorkspaceAspect","ConfigAspect","LoggerAspect","MainRuntime","addRuntime","_default"],"sources":["config-merger.main.runtime.ts"],"sourcesContent":["import semver from 'semver';\nimport { isEmpty } from 'lodash';\nimport {\n DependencyResolverAspect,\n DependencyResolverMain,\n WorkspacePolicy,\n WorkspacePolicyConfigKeysNames,\n WorkspacePolicyEntry,\n} from '@teambit/dependency-resolver';\nimport { snapToSemver } from '@teambit/component-package-version';\nimport tempy from 'tempy';\nimport fs from 'fs-extra';\nimport { MainRuntime } from '@teambit/cli';\nimport { WorkspaceAspect, Workspace } from '@teambit/workspace';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport ConsumerComponent from '@teambit/legacy/dist/consumer/component';\nimport { DEPENDENCIES_FIELDS } from '@teambit/legacy/dist/constants';\nimport { BitError } from '@teambit/bit-error';\nimport mergeFiles, { MergeFileParams } from '@teambit/legacy/dist/utils/merge-files';\nimport { ConfigAspect, ConfigMain } from '@teambit/config';\nimport { ConfigMergeResult, parseVersionLineWithConflict } from './config-merge-result';\nimport { ConfigMergerAspect } from './config-merger.aspect';\nimport { AggregatedDeps } from './aggregated-deps';\n\nexport type PkgEntry = { name: string; version: string; force: boolean };\n\nconst WS_DEPS_FIELDS = ['dependencies', 'peerDependencies'];\n\nexport type WorkspaceDepsUpdates = { [pkgName: string]: [string, string] }; // from => to\nexport type WorkspaceDepsConflicts = Record<WorkspacePolicyConfigKeysNames, Array<{ name: string; version: string }>>; // the pkg value is in a format of CONFLICT::OURS::THEIRS\nexport type WorkspaceDepsUnchanged = { [pkgName: string]: string }; // the pkg value is the message why it wasn't updated\n\nexport type WorkspaceConfigUpdateResult = {\n workspaceDepsUpdates?: WorkspaceDepsUpdates; // in case workspace.jsonc has been updated with dependencies versions\n workspaceDepsConflicts?: WorkspaceDepsConflicts; // in case workspace.jsonc has conflicts\n workspaceDepsUnchanged?: WorkspaceDepsUnchanged; // in case the deps in workspace.jsonc couldn't be updated\n workspaceConfigConflictWriteError?: Error; // in case workspace.jsonc has conflicts and we failed to write the conflicts to the file\n logs?: string[]; // verbose details about the updates/conflicts for each one of the deps\n};\nexport class ConfigMergerMain {\n constructor(\n private workspace: Workspace,\n private logger: Logger,\n private config: ConfigMain,\n private depsResolver: DependencyResolverMain\n ) {}\n\n async generateConfigMergeConflictFileForAll(allConfigMerge: ConfigMergeResult[]) {\n const configMergeFile = this.workspace.getConflictMergeFile();\n allConfigMerge.forEach((configMerge) => {\n const conflict = configMerge.generateMergeConflictFile();\n if (!conflict) return;\n configMergeFile.addConflict(configMerge.compIdStr, conflict);\n });\n if (configMergeFile.hasConflict()) {\n await configMergeFile.write();\n }\n }\n\n async writeWorkspaceJsoncWithConflictsGracefully(\n workspaceDepsConflicts: WorkspaceDepsConflicts\n ): Promise<Error | undefined> {\n try {\n await this.writeWorkspaceJsoncWithConflicts(workspaceDepsConflicts);\n return undefined;\n } catch (err: any) {\n this.logger.error(`unable to write workspace.jsonc with conflicts`, err);\n const errTitle = `unable to write workspace.jsonc with conflicts, due to an error: \"${err.message}\".\nsee the conflicts below and edit your workspace.jsonc as you see fit.`;\n const conflictsStr = WS_DEPS_FIELDS.map((depField) => {\n if (!workspaceDepsConflicts[depField]) return [];\n return workspaceDepsConflicts[depField].map(({ name, version }) => {\n const { currentVal, otherVal } = parseVersionLineWithConflict(version);\n return `(${depField}) ${name}: ours: ${currentVal}, theirs: ${otherVal}`;\n });\n })\n .flat()\n .join('\\n');\n return new BitError(`${errTitle}\\n${conflictsStr}`);\n }\n }\n\n private async writeWorkspaceJsoncWithConflicts(workspaceDepsConflicts: WorkspaceDepsConflicts) {\n const wsConfig = this.config.workspaceConfig;\n if (!wsConfig) throw new Error(`unable to get workspace config`);\n const wsJsoncPath = wsConfig.path;\n const wsJsoncOriginalContent = await fs.readFile(wsJsoncPath, 'utf8');\n let wsJsoncContent = wsJsoncOriginalContent;\n WS_DEPS_FIELDS.forEach((depField) => {\n if (!workspaceDepsConflicts[depField]) return;\n workspaceDepsConflicts[depField].forEach(({ name, version }) => {\n const { currentVal, otherVal } = parseVersionLineWithConflict(version);\n // e.g. \"@ci/8oypmb6p-remote.bar.foo\": \"^0.0.3\"\n const originalDep = `\"${name}\": \"${currentVal}\"`;\n if (!wsJsoncContent.includes(originalDep)) {\n throw new Error(`unable to find the dependency ${originalDep} in the workspace.jsonc`);\n }\n wsJsoncContent = wsJsoncContent.replace(originalDep, `\"${name}\": \"${otherVal}\"`);\n });\n });\n\n const baseFilePath = await tempy.write('');\n const otherFilePath = await tempy.write(wsJsoncContent);\n const mergeFilesParams: MergeFileParams = {\n filePath: wsJsoncPath,\n currentFile: {\n label: 'ours',\n path: wsJsoncPath,\n },\n baseFile: {\n path: baseFilePath,\n },\n otherFile: {\n label: 'theirs',\n path: otherFilePath,\n },\n };\n const mergeResult = await mergeFiles(mergeFilesParams);\n const conflictFile = mergeResult.conflict;\n if (!conflictFile) {\n this.logger.debug(`original content:\\n${wsJsoncOriginalContent}`);\n this.logger.debug(`new content:\\n${wsJsoncContent}`);\n throw new Error('unable to generate conflict from the workspace.jsonc file. see debug.log for the file content');\n }\n await wsConfig.backupConfigFile('before writing conflicts');\n this.logger.debug('writing workspace.jsonc with conflicts');\n await fs.writeFile(wsJsoncPath, conflictFile);\n }\n\n async updateWorkspaceJsoncWithDepsIfNeeded(allConfigMerge: ConfigMergeResult[]): Promise<{\n workspaceDepsUpdates?: WorkspaceDepsUpdates;\n workspaceDepsConflicts?: WorkspaceDepsConflicts;\n workspaceDepsUnchanged?: WorkspaceDepsUnchanged;\n }> {\n const allResults = allConfigMerge.map((c) => c.getDepsResolverResult());\n\n // aggregate all dependencies that can be updated (not conflicting)\n const nonConflictDeps = new AggregatedDeps();\n allConfigMerge.forEach((configMerge) => {\n const mergedConfig = configMerge.getDepsResolverResult()?.mergedConfig;\n if (!mergedConfig || mergedConfig === '-') return;\n const mergedConfigPolicy = mergedConfig.policy || {};\n DEPENDENCIES_FIELDS.forEach((depField) => {\n mergedConfigPolicy[depField]?.forEach((pkg: PkgEntry) => nonConflictDeps.push(pkg, configMerge.compIdStr));\n });\n });\n\n // aggregate all dependencies that have conflicts\n const conflictDeps = new AggregatedDeps();\n allConfigMerge.forEach((configMerge) => {\n const mergedConfigConflict = configMerge.getDepsResolverResult()?.conflict;\n if (!mergedConfigConflict) return;\n DEPENDENCIES_FIELDS.forEach((depField) => {\n mergedConfigConflict[depField]?.forEach((pkg: PkgEntry) => conflictDeps.push(pkg, configMerge.compIdStr));\n });\n });\n\n // uncomment to get the aggregated deps of both the conflicted and non-conflicted\n // console.log('nonConflictDeps', nonConflictDeps.toString(), 'conflictDeps', conflictDeps.toString());\n\n const notConflictedPackages = nonConflictDeps.depsNames;\n const conflictedPackages = conflictDeps.depsNames;\n if (!notConflictedPackages.length && !conflictedPackages.length) return {};\n\n const workspaceConfig = this.config.workspaceConfig;\n if (!workspaceConfig) throw new Error(`updateWorkspaceJsoncWithDepsIfNeeded unable to get workspace config`);\n const depResolver = workspaceConfig.extensions.findCoreExtension(DependencyResolverAspect.id);\n const policy = depResolver?.config.policy;\n if (!policy) {\n return {};\n }\n\n const workspaceDepsUnchanged: { [pkgName: string]: string } = {};\n\n // calculate the workspace.json updates\n const workspaceJsonUpdates: WorkspaceDepsUpdates = {};\n notConflictedPackages.forEach((pkgName) => {\n DEPENDENCIES_FIELDS.forEach((depField) => {\n if (!policy[depField]?.[pkgName]) return; // doesn't exists in the workspace.json\n const currentVer = policy[depField][pkgName];\n if (!nonConflictDeps.hasSameVersions(pkgName)) {\n // we only want the deps that the other lane has them in the workspace.json and that all comps use the same dep.\n workspaceDepsUnchanged[pkgName] = nonConflictDeps.reportMultipleVersions(pkgName);\n return;\n }\n const newVer = nonConflictDeps.getFirstVersion(pkgName);\n if (currentVer === newVer) return;\n workspaceJsonUpdates[pkgName] = [currentVer, newVer];\n policy[depField][pkgName] = newVer;\n const compIds = nonConflictDeps.getCompIdsBy(pkgName).join(', ');\n this.logger.debug(\n `update workspace.jsonc: ${pkgName} from ${currentVer} to ${newVer}. Triggered by: ${compIds}`\n );\n });\n });\n\n // calculate the workspace.json conflicts\n const workspaceJsonConflicts = { dependencies: [], peerDependencies: [] };\n const conflictPackagesToRemoveFromConfigMerge: string[] = [];\n conflictedPackages.forEach((pkgName) => {\n if (!conflictDeps.hasSameVersions(pkgName)) {\n // we only want the deps that the other lane has them in the workspace.json and that all comps use the same dep.\n workspaceDepsUnchanged[pkgName] = conflictDeps.reportMultipleVersions(pkgName);\n return;\n }\n const conflictRaw = conflictDeps.getFirstVersion(pkgName);\n const [, currentVal, otherVal] = conflictRaw.split('::');\n // in case of a snap, the otherVal is the snap-hash, we need to convert it to semver\n const otherValValid = snapToSemver(otherVal);\n WS_DEPS_FIELDS.forEach((depField) => {\n if (!policy[depField]?.[pkgName]) return;\n const currentVerInWsJson = policy[depField][pkgName];\n if (!currentVerInWsJson) return;\n // the version is coming from the workspace.jsonc\n conflictPackagesToRemoveFromConfigMerge.push(pkgName);\n if (semver.satisfies(otherValValid, currentVerInWsJson)) {\n // the other version is compatible with the current version in the workspace.json\n return;\n }\n workspaceJsonConflicts[depField].push({\n name: pkgName,\n version: conflictRaw.replace(currentVal, currentVerInWsJson),\n force: false,\n });\n conflictPackagesToRemoveFromConfigMerge.push(pkgName);\n const compIds = conflictDeps.getCompIdsBy(pkgName).join(', ');\n this.logger.debug(\n `conflict workspace.jsonc: ${pkgName} current: ${currentVerInWsJson}, other: ${otherValValid}. Triggered by: ${compIds}`\n );\n });\n });\n WS_DEPS_FIELDS.forEach((depField) => {\n if (isEmpty(workspaceJsonConflicts[depField])) delete workspaceJsonConflicts[depField];\n });\n\n if (conflictPackagesToRemoveFromConfigMerge.length) {\n allResults.forEach((result) => {\n if (result?.conflict) {\n DEPENDENCIES_FIELDS.forEach((depField) => {\n if (!result.conflict?.[depField]) return;\n result.conflict[depField] = result.conflict?.[depField].filter(\n (dep) => !conflictPackagesToRemoveFromConfigMerge.includes(dep.name)\n );\n if (!result.conflict[depField].length) delete result.conflict[depField];\n });\n if (isEmpty(result.conflict)) result.conflict = undefined;\n }\n });\n }\n\n if (Object.keys(workspaceJsonUpdates).length) {\n await workspaceConfig.write({ reasonForChange: 'merge (update dependencies)' });\n }\n\n this.logger.debug('final workspace.jsonc updates', workspaceJsonUpdates);\n this.logger.debug('final workspace.jsonc conflicts', workspaceJsonConflicts);\n\n return {\n workspaceDepsUpdates: Object.keys(workspaceJsonUpdates).length ? workspaceJsonUpdates : undefined,\n workspaceDepsConflicts: Object.keys(workspaceJsonConflicts).length ? workspaceJsonConflicts : undefined,\n workspaceDepsUnchanged: Object.keys(workspaceDepsUnchanged).length ? workspaceDepsUnchanged : undefined,\n };\n }\n\n async updateDepsInWorkspaceConfig(components: ConsumerComponent[]): Promise<WorkspaceConfigUpdateResult | undefined> {\n const workspacePolicy = this.depsResolver.getWorkspacePolicyFromConfig();\n const workspacePolicyObj = workspacePolicy.entries.reduce((acc, current) => {\n acc[current.dependencyId] = current.value.version;\n return acc;\n }, {});\n const componentDepsWithMultipleVer: Record<string, string[]> = {};\n components.forEach((component) => {\n const deps = this.depsResolver.getDependenciesFromLegacyComponent(component);\n deps.forEach((dep) => {\n if (dep.source !== 'auto') return;\n const depId = dep.getPackageName?.();\n if (!depId) return; // unclear when this happens.\n if (!workspacePolicyObj[depId]) return;\n if (workspacePolicyObj[depId] === dep.version) return;\n if (componentDepsWithMultipleVer[depId]?.includes(dep.version)) return;\n\n (componentDepsWithMultipleVer[depId] ||= []).push(dep.version);\n });\n });\n\n const compToLog = Object.keys(componentDepsWithMultipleVer)\n .map(\n (depId) =>\n `${depId} => workspace: ${workspacePolicyObj[depId]}, components: ${componentDepsWithMultipleVer[depId].join(\n ', '\n )}`\n )\n .join('\\n');\n this.logger.info(`found the following deps to update/conflict:\\n${compToLog}`);\n\n const componentDeps = Object.keys(componentDepsWithMultipleVer).reduce((acc, depId) => {\n // if there are different versions of this dep between the components, forget about it.\n if (componentDepsWithMultipleVer[depId].length > 1) return acc;\n acc[depId] = componentDepsWithMultipleVer[depId][0];\n return acc;\n }, {});\n\n if (isEmpty(componentDeps)) {\n return undefined;\n }\n\n const workspaceDepsUpdates: WorkspaceDepsUpdates = {};\n const workspaceDepsConflicts: WorkspaceDepsConflicts = { dependencies: [], peerDependencies: [] };\n\n const logs: string[] = [];\n\n Object.keys(componentDeps).forEach((depId) => {\n const depInCompVer: string = componentDeps[depId];\n const depInWsVer: string = workspacePolicyObj[depId];\n const isDepInCompVersion = Boolean(semver.valid(depInCompVer));\n const isDepInCompRange = !isDepInCompVersion && Boolean(semver.validRange(depInCompVer));\n\n const addNotUpdateToLogs = (reason: string) => {\n logs.push(`${depId} - not updating. ${reason}`);\n };\n\n if (!isDepInCompVersion && !isDepInCompRange) {\n addNotUpdateToLogs(`probably a snap-hash`);\n return; // probably a snap-hash.\n }\n const isDepInWsVersion = Boolean(semver.valid(depInWsVer));\n const isDepInWsRange = !isDepInWsVersion && Boolean(semver.validRange(depInWsVer));\n if (!isDepInWsVersion && !isDepInWsRange) {\n addNotUpdateToLogs(`probably a snap-hash`);\n return; // probably a snap-hash.\n }\n\n // both are either versions or ranges\n const lifeCycle =\n workspacePolicy.entries.find((d) => d.dependencyId === depId)?.lifecycleType === 'peer'\n ? 'peerDependencies'\n : 'dependencies';\n\n const addToUpdate = (addRangeFrom?: string) => {\n if (addRangeFrom) {\n // depInCompVer is a version, depInWsVer is a range\n const potentialRangeChar = depInWsVer[0];\n const newRange = potentialRangeChar + depInCompVer;\n if (newRange === depInWsVer) {\n addNotUpdateToLogs(`the min version from ws ${depInWsVer} is the same as ${depInCompVer} from comp`);\n return;\n }\n if (!semver.validRange(newRange)) {\n const warnMsg = `failed to add the range \"${potentialRangeChar}\" to ${depInCompVer}, the result is not a valid range`;\n this.logger.warn(warnMsg);\n addNotUpdateToLogs(warnMsg);\n return;\n }\n logs.push(`${depId} - updating from ${depInWsVer} to ${newRange} (new range based on ${depInCompVer})`);\n workspaceDepsUpdates[depId] = [depInWsVer, newRange];\n } else {\n logs.push(`${depId} - updating from ${depInWsVer} to ${depInCompVer}`);\n workspaceDepsUpdates[depId] = [depInWsVer, depInCompVer];\n }\n };\n const addToConflict = () => {\n workspaceDepsConflicts[lifeCycle].push({ name: depId, version: `CONFLICT::${depInWsVer}::${depInCompVer}` });\n logs.push(`${depId} - conflict. ours: ${depInWsVer}, theirs: ${depInCompVer}`);\n };\n\n // both are versions\n if (isDepInCompVersion && isDepInWsVersion) {\n if (semver.gt(depInCompVer, depInWsVer)) {\n addToConflict();\n return;\n }\n addNotUpdateToLogs(`the version from ws ${depInWsVer} is greater than ${depInCompVer} from comp`);\n return;\n }\n\n // both are ranges\n if (isDepInCompRange && isDepInWsRange) {\n if (this.isRange1GreaterThanRange2Naively(depInCompVer, depInWsVer)) {\n addToUpdate();\n return;\n }\n addNotUpdateToLogs(`the range from ws ${depInWsVer} is greater than ${depInCompVer} from comp`);\n return;\n }\n\n if (isDepInCompVersion && isDepInWsRange) {\n const wsMinVer = semver.minVersion(depInWsVer);\n if (!wsMinVer) {\n this.logger.warn(`unable to calculate the min version of ${depInWsVer}`);\n addNotUpdateToLogs(`unable to calculate the min version of ${depInWsVer} from ws`);\n return;\n }\n if (semver.gt(wsMinVer, depInCompVer)) {\n addNotUpdateToLogs(`the min version from ws ${depInWsVer} is greater than ${depInCompVer} from comp`);\n return;\n }\n if (semver.satisfies(depInCompVer, depInWsVer)) {\n addToUpdate(depInWsVer);\n return;\n }\n addToConflict();\n return;\n }\n\n if (isDepInCompRange && isDepInWsVersion) {\n if (semver.satisfies(depInWsVer, depInCompVer)) {\n addToUpdate();\n return;\n }\n const compMinVer = semver.minVersion(depInCompVer);\n if (!compMinVer) {\n this.logger.warn(`unable to calculate the min version of ${compMinVer}`);\n addNotUpdateToLogs(`unable to calculate the min version of ${compMinVer} from comp`);\n return;\n }\n if (semver.gt(compMinVer, depInWsVer)) {\n addToConflict();\n return;\n }\n addNotUpdateToLogs(`the min version from comp ${compMinVer} is less than ${depInWsVer} from ws`);\n }\n throw new Error(`unhandled case: comp: ${depInCompVer}, ws: ${depInWsVer}`);\n });\n\n WS_DEPS_FIELDS.forEach((depField) => {\n if (isEmpty(workspaceDepsConflicts[depField])) delete workspaceDepsConflicts[depField];\n });\n\n this.logger.debug(`workspace config-merge all components logs\\n${logs.join('\\n')}`);\n this.logger.debug('final workspace.jsonc updates [from, to]', workspaceDepsUpdates);\n this.logger.debug(`final workspace.jsonc conflicts ${JSON.stringify(workspaceDepsConflicts, undefined, 2)}`);\n\n await this.updateWsConfigWithGivenChanges(workspaceDepsUpdates, workspacePolicy);\n let workspaceConfigConflictWriteError: Error | undefined;\n if (!isEmpty(workspaceDepsConflicts)) {\n workspaceConfigConflictWriteError = await this.writeWorkspaceJsoncWithConflictsGracefully(workspaceDepsConflicts);\n }\n\n return {\n workspaceDepsUpdates: isEmpty(workspaceDepsUpdates) ? undefined : workspaceDepsUpdates,\n workspaceDepsConflicts: isEmpty(workspaceDepsConflicts) ? undefined : workspaceDepsConflicts,\n workspaceConfigConflictWriteError,\n logs,\n };\n }\n\n private async updateWsConfigWithGivenChanges(workspaceDepsUpdates: WorkspaceDepsUpdates, wsPolicy: WorkspacePolicy) {\n if (isEmpty(workspaceDepsUpdates)) return;\n const getLifeCycle = (depId: string) => {\n const lifeCycle = wsPolicy.entries.find((d) => d.dependencyId === depId)?.lifecycleType;\n if (!lifeCycle) throw new Error(`unable to find the lifecycle of ${depId}`);\n return lifeCycle;\n };\n\n const newWorkspacePolicyEntries: WorkspacePolicyEntry[] = Object.keys(workspaceDepsUpdates).map((pkgName) => {\n return {\n dependencyId: pkgName,\n lifecycleType: getLifeCycle(pkgName),\n value: {\n version: workspaceDepsUpdates[pkgName][1],\n },\n };\n });\n this.depsResolver.addToRootPolicy(newWorkspacePolicyEntries, {\n updateExisting: true,\n });\n await this.depsResolver.persistConfig('config-merger (update root policy)');\n }\n\n /**\n * if both versions are ranges, it's hard to check which one is bigger. sometimes it's even impossible.\n * remember that a range can be something like `1.2 <1.2.9 || >2.0.0`.\n * this check is naive in a way that it assumes the range is simple, such as \"^1.2.3\" or \"~1.2.3.\n * in this case, it's possible to check for the minimum version and compare it.\n */\n private isRange1GreaterThanRange2Naively(range1: string, range2: string) {\n const minVersion1 = semver.minVersion(range1);\n const minVersion2 = semver.minVersion(range2);\n if (!minVersion1 || !minVersion2) return false;\n return semver.gt(minVersion1, minVersion2);\n }\n\n static slots = [];\n static dependencies = [WorkspaceAspect, ConfigAspect, LoggerAspect, DependencyResolverAspect];\n static runtime = MainRuntime;\n static async provider([workspace, config, loggerMain, depsResolver]: [\n Workspace,\n ConfigMain,\n LoggerMain,\n DependencyResolverMain\n ]) {\n const logger = loggerMain.createLogger(ConfigMergerAspect.id);\n return new ConfigMergerMain(workspace, logger, config, depsResolver);\n }\n}\n\nConfigMergerAspect.addRuntime(ConfigMergerMain);\n\nexport default ConfigMergerMain;\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/config-merger",
3
- "version": "0.0.138",
3
+ "version": "0.0.140",
4
4
  "homepage": "https://bit.cloud/teambit/workspace/config-merger",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.workspace",
8
8
  "name": "config-merger",
9
- "version": "0.0.138"
9
+ "version": "0.0.140"
10
10
  },
11
11
  "dependencies": {
12
12
  "lodash": "4.17.21",
@@ -17,14 +17,14 @@
17
17
  "@teambit/component-version": "1.0.3",
18
18
  "@teambit/harmony": "0.4.6",
19
19
  "@teambit/bit-error": "0.0.404",
20
- "@teambit/builder": "1.0.271",
21
- "@teambit/dependency-resolver": "1.0.271",
22
- "@teambit/envs": "1.0.271",
20
+ "@teambit/builder": "1.0.273",
21
+ "@teambit/dependency-resolver": "1.0.273",
22
+ "@teambit/envs": "1.0.273",
23
23
  "@teambit/logger": "0.0.958",
24
24
  "@teambit/cli": "0.0.865",
25
25
  "@teambit/component-package-version": "0.0.433",
26
- "@teambit/config": "0.0.1022",
27
- "@teambit/workspace": "1.0.271"
26
+ "@teambit/config": "0.0.1024",
27
+ "@teambit/workspace": "1.0.273"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@types/lodash": "4.14.165",
@@ -35,7 +35,7 @@
35
35
  "@teambit/harmony.envs.core-aspect-env": "0.0.33"
36
36
  },
37
37
  "peerDependencies": {
38
- "@teambit/legacy": "1.0.700"
38
+ "@teambit/legacy": "1.0.702"
39
39
  },
40
40
  "license": "Apache-2.0",
41
41
  "optionalDependencies": {},