@teambit/config-merger 0.0.4 → 0.0.5

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,6 +1,7 @@
1
- import { WorkspacePolicyConfigKeysNames } from '@teambit/dependency-resolver';
1
+ import { DependencyResolverMain, WorkspacePolicyConfigKeysNames } from '@teambit/dependency-resolver';
2
2
  import { Workspace } from '@teambit/workspace';
3
3
  import { Logger, LoggerMain } from '@teambit/logger';
4
+ import ConsumerComponent from '@teambit/legacy/dist/consumer/component';
4
5
  import { ConfigMain } from '@teambit/config';
5
6
  import { ConfigMergeResult } from './config-merge-result';
6
7
  export type WorkspaceDepsUpdates = {
@@ -10,11 +11,18 @@ export type WorkspaceDepsConflicts = Record<WorkspacePolicyConfigKeysNames, Arra
10
11
  name: string;
11
12
  version: string;
12
13
  }>>;
14
+ export type WorkspaceConfigUpdateResult = {
15
+ workspaceDepsUpdates?: WorkspaceDepsUpdates;
16
+ workspaceDepsConflicts?: WorkspaceDepsConflicts;
17
+ workspaceConfigConflictWriteError?: Error;
18
+ logs?: string[];
19
+ };
13
20
  export declare class ConfigMergerMain {
14
21
  private workspace;
15
22
  private logger;
16
23
  private config;
17
- constructor(workspace: Workspace, logger: Logger, config: ConfigMain);
24
+ private depsResolver;
25
+ constructor(workspace: Workspace, logger: Logger, config: ConfigMain, depsResolver: DependencyResolverMain);
18
26
  generateConfigMergeConflictFileForAll(allConfigMerge: ConfigMergeResult[]): Promise<void>;
19
27
  writeWorkspaceJsoncWithConflictsGracefully(workspaceDepsConflicts: WorkspaceDepsConflicts): Promise<Error | undefined>;
20
28
  private writeWorkspaceJsoncWithConflicts;
@@ -22,9 +30,23 @@ export declare class ConfigMergerMain {
22
30
  workspaceDepsUpdates?: WorkspaceDepsUpdates;
23
31
  workspaceDepsConflicts?: WorkspaceDepsConflicts;
24
32
  }>;
33
+ updateDepsInWorkspaceConfig(components: ConsumerComponent[]): Promise<WorkspaceConfigUpdateResult | undefined>;
34
+ private updateWsConfigWithGivenChanges;
35
+ /**
36
+ * if both versions are ranges, it's hard to check which one is bigger. sometimes it's even impossible.
37
+ * remember that a range can be something like `1.2 <1.2.9 || >2.0.0`.
38
+ * this check is naive in a way that it assumes the range is simple, such as "^1.2.3" or "~1.2.3.
39
+ * in this case, it's possible to check for the minimum version and compare it.
40
+ */
41
+ private isRange1GreaterThanRange2Naively;
25
42
  static slots: any[];
26
43
  static dependencies: import("@teambit/harmony").Aspect[];
27
44
  static runtime: import("@teambit/harmony").RuntimeDefinition;
28
- static provider([workspace, config, loggerMain]: [Workspace, ConfigMain, LoggerMain]): Promise<ConfigMergerMain>;
45
+ static provider([workspace, config, loggerMain, depsResolver]: [
46
+ Workspace,
47
+ ConfigMain,
48
+ LoggerMain,
49
+ DependencyResolverMain
50
+ ]): Promise<ConfigMergerMain>;
29
51
  }
30
52
  export default ConfigMergerMain;
@@ -109,14 +109,14 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
109
109
  const WS_DEPS_FIELDS = ['dependencies', 'peerDependencies'];
110
110
 
111
111
  // from => to
112
-
113
112
  // the pkg value is in a format of CONFLICT::OURS::THEIRS
114
113
 
115
114
  class ConfigMergerMain {
116
- constructor(workspace, logger, config) {
115
+ constructor(workspace, logger, config, depsResolver) {
117
116
  this.workspace = workspace;
118
117
  this.logger = logger;
119
118
  this.config = config;
119
+ this.depsResolver = depsResolver;
120
120
  }
121
121
  async generateConfigMergeConflictFileForAll(allConfigMerge) {
122
122
  const configMergeFile = this.workspace.getConflictMergeFile();
@@ -201,6 +201,7 @@ see the conflicts below and edit your workspace.jsonc as you see fit.`;
201
201
  throw new Error('unable to generate conflict from the workspace.jsonc file. see debug.log for the file content');
202
202
  }
203
203
  await wsConfig.backupConfigFile('before writing conflicts');
204
+ this.logger.debug('writing workspace.jsonc with conflicts');
204
205
  await _fsExtra().default.writeFile(wsJsoncPath, conflictFile);
205
206
  }
206
207
  async updateWorkspaceJsoncWithDepsIfNeeded(allConfigMerge) {
@@ -336,14 +337,204 @@ see the conflicts below and edit your workspace.jsonc as you see fit.`;
336
337
  workspaceDepsConflicts: Object.keys(workspaceJsonConflicts).length ? workspaceJsonConflicts : undefined
337
338
  };
338
339
  }
339
- static async provider([workspace, config, loggerMain]) {
340
+ async updateDepsInWorkspaceConfig(components) {
341
+ const workspacePolicy = this.depsResolver.getWorkspacePolicyFromConfig();
342
+ const workspacePolicyObj = workspacePolicy.entries.reduce((acc, current) => {
343
+ acc[current.dependencyId] = current.value.version;
344
+ return acc;
345
+ }, {});
346
+ const componentDepsWithMultipleVer = {};
347
+ components.forEach(component => {
348
+ const deps = this.depsResolver.getDependenciesFromLegacyComponent(component);
349
+ deps.forEach(dep => {
350
+ if (dep.source !== 'auto') return;
351
+ const depId = dep.idWithoutVersion;
352
+ if (!workspacePolicyObj[depId]) return;
353
+ if (workspacePolicyObj[depId] === dep.version) return;
354
+ if (componentDepsWithMultipleVer[depId]?.includes(dep.version)) return;
355
+ (componentDepsWithMultipleVer[depId] ||= []).push(dep.version);
356
+ });
357
+ });
358
+ const compToLog = Object.keys(componentDepsWithMultipleVer).map(depId => `${depId} => workspace: ${workspacePolicyObj[depId]}, components: ${componentDepsWithMultipleVer[depId].join(', ')}`).join('\n');
359
+ this.logger.info(`found the following deps to update/conflict:\n${compToLog}`);
360
+ const componentDeps = Object.keys(componentDepsWithMultipleVer).reduce((acc, depId) => {
361
+ // if there are different versions of this dep between the components, forget about it.
362
+ if (componentDepsWithMultipleVer[depId].length > 1) return acc;
363
+ acc[depId] = componentDepsWithMultipleVer[depId][0];
364
+ return acc;
365
+ }, {});
366
+ if ((0, _lodash().isEmpty)(componentDeps)) {
367
+ return undefined;
368
+ }
369
+ const workspaceDepsUpdates = {};
370
+ const workspaceDepsConflicts = {
371
+ dependencies: [],
372
+ peerDependencies: []
373
+ };
374
+ const logs = [];
375
+ Object.keys(componentDeps).forEach(depId => {
376
+ const depInCompVer = componentDeps[depId];
377
+ const depInWsVer = workspacePolicyObj[depId];
378
+ const isDepInCompVersion = Boolean(_semver().default.valid(depInCompVer));
379
+ const isDepInCompRange = !isDepInCompVersion && Boolean(_semver().default.validRange(depInCompVer));
380
+ const addNotUpdateToLogs = reason => {
381
+ logs.push(`${depId} - not updating. ${reason}`);
382
+ };
383
+ if (!isDepInCompVersion && !isDepInCompRange) {
384
+ addNotUpdateToLogs(`probably a snap-hash`);
385
+ return; // probably a snap-hash.
386
+ }
387
+ const isDepInWsVersion = Boolean(_semver().default.valid(depInWsVer));
388
+ const isDepInWsRange = !isDepInWsVersion && Boolean(_semver().default.validRange(depInWsVer));
389
+ if (!isDepInWsVersion && !isDepInWsRange) {
390
+ addNotUpdateToLogs(`probably a snap-hash`);
391
+ return; // probably a snap-hash.
392
+ }
393
+
394
+ // both are either versions or ranges
395
+ const lifeCycle = workspacePolicy.entries.find(d => d.dependencyId === depId)?.lifecycleType === 'peer' ? 'peerDependencies' : 'dependencies';
396
+ const addToUpdate = addRangeFrom => {
397
+ if (addRangeFrom) {
398
+ // depInCompVer is a version, depInWsVer is a range
399
+ const potentialRangeChar = depInWsVer[0];
400
+ const newRange = potentialRangeChar + depInCompVer;
401
+ if (!_semver().default.validRange(newRange)) {
402
+ const warnMsg = `failed to add the range "${potentialRangeChar}" to ${depInCompVer}, the result is not a valid range`;
403
+ this.logger.warn(warnMsg);
404
+ addNotUpdateToLogs(warnMsg);
405
+ return;
406
+ }
407
+ logs.push(`${depId} - updating from ${depInWsVer} to ${newRange} (new range based on ${depInCompVer})`);
408
+ workspaceDepsUpdates[depId] = [depInWsVer, newRange];
409
+ } else {
410
+ logs.push(`${depId} - updating from ${depInWsVer} to ${depInCompVer}`);
411
+ workspaceDepsUpdates[depId] = [depInWsVer, depInCompVer];
412
+ }
413
+ };
414
+ const addToConflict = () => {
415
+ workspaceDepsConflicts[lifeCycle].push({
416
+ name: depId,
417
+ version: `CONFLICT::${depInWsVer}::${depInCompVer}`
418
+ });
419
+ logs.push(`${depId} - conflict. ours: ${depInWsVer}, theirs: ${depInCompVer}`);
420
+ };
421
+
422
+ // both are versions
423
+ if (isDepInCompVersion && isDepInWsVersion) {
424
+ if (_semver().default.gt(depInCompVer, depInWsVer)) {
425
+ addToConflict();
426
+ return;
427
+ }
428
+ addNotUpdateToLogs(`the version from ws ${depInWsVer} is greater than ${depInCompVer} from comp`);
429
+ return;
430
+ }
431
+
432
+ // both are ranges
433
+ if (isDepInCompRange && isDepInWsRange) {
434
+ if (this.isRange1GreaterThanRange2Naively(depInCompVer, depInWsVer)) {
435
+ addToUpdate();
436
+ return;
437
+ }
438
+ addNotUpdateToLogs(`the range from ws ${depInWsVer} is greater than ${depInCompVer} from comp`);
439
+ return;
440
+ }
441
+ if (isDepInCompVersion && isDepInWsRange) {
442
+ const wsMinVer = _semver().default.minVersion(depInWsVer);
443
+ if (!wsMinVer) {
444
+ this.logger.warn(`unable to calculate the min version of ${depInWsVer}`);
445
+ addNotUpdateToLogs(`unable to calculate the min version of ${depInWsVer} from ws`);
446
+ return;
447
+ }
448
+ if (_semver().default.gt(wsMinVer, depInCompVer)) {
449
+ addNotUpdateToLogs(`the min version from ws ${depInWsVer} is greater than ${depInCompVer} from comp`);
450
+ return;
451
+ }
452
+ if (_semver().default.satisfies(depInCompVer, depInWsVer)) {
453
+ addToUpdate(depInWsVer);
454
+ return;
455
+ }
456
+ addToConflict();
457
+ return;
458
+ }
459
+ if (isDepInCompRange && isDepInWsVersion) {
460
+ if (_semver().default.satisfies(depInWsVer, depInCompVer)) {
461
+ addToUpdate();
462
+ return;
463
+ }
464
+ const compMinVer = _semver().default.minVersion(depInCompVer);
465
+ if (!compMinVer) {
466
+ this.logger.warn(`unable to calculate the min version of ${compMinVer}`);
467
+ addNotUpdateToLogs(`unable to calculate the min version of ${compMinVer} from comp`);
468
+ return;
469
+ }
470
+ if (_semver().default.gt(compMinVer, depInWsVer)) {
471
+ addToConflict();
472
+ return;
473
+ }
474
+ addNotUpdateToLogs(`the min version from comp ${compMinVer} is less than ${depInWsVer} from ws`);
475
+ }
476
+ throw new Error(`unhandled case: comp: ${depInCompVer}, ws: ${depInWsVer}`);
477
+ });
478
+ WS_DEPS_FIELDS.forEach(depField => {
479
+ if ((0, _lodash().isEmpty)(workspaceDepsConflicts[depField])) delete workspaceDepsConflicts[depField];
480
+ });
481
+ this.logger.debug(`workspace config-merge all components logs\n${logs.join('\n')}`);
482
+ this.logger.debug('final workspace.jsonc updates [from, to]', workspaceDepsUpdates);
483
+ this.logger.debug(`final workspace.jsonc conflicts ${JSON.stringify(workspaceDepsConflicts, undefined, 2)}`);
484
+ await this.updateWsConfigWithGivenChanges(workspaceDepsUpdates, workspacePolicy);
485
+ let workspaceConfigConflictWriteError;
486
+ if (!(0, _lodash().isEmpty)(workspaceDepsConflicts)) {
487
+ workspaceConfigConflictWriteError = await this.writeWorkspaceJsoncWithConflictsGracefully(workspaceDepsConflicts);
488
+ }
489
+ return {
490
+ workspaceDepsUpdates: (0, _lodash().isEmpty)(workspaceDepsUpdates) ? undefined : workspaceDepsUpdates,
491
+ workspaceDepsConflicts: (0, _lodash().isEmpty)(workspaceDepsConflicts) ? undefined : workspaceDepsConflicts,
492
+ workspaceConfigConflictWriteError,
493
+ logs
494
+ };
495
+ }
496
+ async updateWsConfigWithGivenChanges(workspaceDepsUpdates, wsPolicy) {
497
+ if ((0, _lodash().isEmpty)(workspaceDepsUpdates)) return;
498
+ const getLifeCycle = depId => {
499
+ const lifeCycle = wsPolicy.entries.find(d => d.dependencyId === depId)?.lifecycleType;
500
+ if (!lifeCycle) throw new Error(`unable to find the lifecycle of ${depId}`);
501
+ return lifeCycle;
502
+ };
503
+ const newWorkspacePolicyEntries = Object.keys(workspaceDepsUpdates).map(pkgName => {
504
+ return {
505
+ dependencyId: pkgName,
506
+ lifecycleType: getLifeCycle(pkgName),
507
+ value: {
508
+ version: workspaceDepsUpdates[pkgName][1]
509
+ }
510
+ };
511
+ });
512
+ this.depsResolver.addToRootPolicy(newWorkspacePolicyEntries, {
513
+ updateExisting: true
514
+ });
515
+ await this.depsResolver.persistConfig('config-merger (update root policy)');
516
+ }
517
+
518
+ /**
519
+ * if both versions are ranges, it's hard to check which one is bigger. sometimes it's even impossible.
520
+ * remember that a range can be something like `1.2 <1.2.9 || >2.0.0`.
521
+ * this check is naive in a way that it assumes the range is simple, such as "^1.2.3" or "~1.2.3.
522
+ * in this case, it's possible to check for the minimum version and compare it.
523
+ */
524
+ isRange1GreaterThanRange2Naively(range1, range2) {
525
+ const minVersion1 = _semver().default.minVersion(range1);
526
+ const minVersion2 = _semver().default.minVersion(range2);
527
+ if (!minVersion1 || !minVersion2) return false;
528
+ return _semver().default.gt(minVersion1, minVersion2);
529
+ }
530
+ static async provider([workspace, config, loggerMain, depsResolver]) {
340
531
  const logger = loggerMain.createLogger(_configMerger().ConfigMergerAspect.id);
341
- return new ConfigMergerMain(workspace, logger, config);
532
+ return new ConfigMergerMain(workspace, logger, config, depsResolver);
342
533
  }
343
534
  }
344
535
  exports.ConfigMergerMain = ConfigMergerMain;
345
536
  _defineProperty(ConfigMergerMain, "slots", []);
346
- _defineProperty(ConfigMergerMain, "dependencies", [_workspace().WorkspaceAspect, _config().ConfigAspect, _logger().LoggerAspect]);
537
+ _defineProperty(ConfigMergerMain, "dependencies", [_workspace().WorkspaceAspect, _config().ConfigAspect, _logger().LoggerAspect, _dependencyResolver().DependencyResolverAspect]);
347
538
  _defineProperty(ConfigMergerMain, "runtime", _cli().MainRuntime);
348
539
  _configMerger().ConfigMergerAspect.addRuntime(ConfigMergerMain);
349
540
  var _default = exports.default = ConfigMergerMain;
@@ -1 +1 @@
1
- {"version":3,"names":["_semver","data","_interopRequireDefault","require","_lodash","_dependencyResolver","_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","String","r","e","Symbol","toPrimitive","call","TypeError","Number","WS_DEPS_FIELDS","ConfigMergerMain","constructor","workspace","logger","config","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","currentVerInWsJson","semver","satisfies","isEmpty","result","filter","dep","reasonForChange","workspaceDepsUpdates","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 { DependencyResolverAspect, WorkspacePolicyConfigKeysNames } from '@teambit/dependency-resolver';\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 { 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 class ConfigMergerMain {\n constructor(private workspace: Workspace, private logger: Logger, private config: ConfigMain) {}\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 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\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(otherVal, 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: ${otherVal}. 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 static slots = [];\n static dependencies = [WorkspaceAspect, ConfigAspect, LoggerAspect];\n static runtime = MainRuntime;\n static async provider([workspace, config, loggerMain]: [Workspace, ConfigMain, LoggerMain]) {\n const logger = loggerMain.createLogger(ConfigMergerAspect.id);\n return new ConfigMergerMain(workspace, logger, config);\n }\n}\n\nConfigMergerAspect.addRuntime(ConfigMergerMain);\n\nexport default ConfigMergerMain;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_semver","data","_interopRequireDefault","require","_lodash","_dependencyResolver","_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","String","r","e","Symbol","toPrimitive","call","TypeError","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","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","idWithoutVersion","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 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\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(otherVal, 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: ${otherVal}. 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.idWithoutVersion;\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 (!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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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { ConfigMergerAspect } from './config-merger.aspect';
2
- export type { ConfigMergerMain, WorkspaceDepsUpdates, WorkspaceDepsConflicts } from './config-merger.main.runtime';
2
+ export type { ConfigMergerMain, WorkspaceDepsUpdates, WorkspaceDepsConflicts, WorkspaceConfigUpdateResult, } from './config-merger.main.runtime';
3
3
  export type { ConfigMergeResult } from './config-merge-result';
4
4
  export { ComponentConfigMerger } from './component-config-merger';
5
5
  export default ConfigMergerAspect;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_configMerger","data","require","_componentConfigMerger","_default","exports","default","ConfigMergerAspect"],"sources":["index.ts"],"sourcesContent":["import { ConfigMergerAspect } from './config-merger.aspect';\n\nexport type { ConfigMergerMain, WorkspaceDepsUpdates, WorkspaceDepsConflicts } from './config-merger.main.runtime';\nexport type { ConfigMergeResult } from './config-merge-result';\nexport { ComponentConfigMerger } from './component-config-merger';\nexport default ConfigMergerAspect;\nexport { ConfigMergerAspect };\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA,SAAAA,cAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,aAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAIA,SAAAE,uBAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,sBAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAkE,IAAAG,QAAA,GAAAC,OAAA,CAAAC,OAAA,GACnDC,kCAAkB"}
1
+ {"version":3,"names":["_configMerger","data","require","_componentConfigMerger","_default","exports","default","ConfigMergerAspect"],"sources":["index.ts"],"sourcesContent":["import { ConfigMergerAspect } from './config-merger.aspect';\n\nexport type {\n ConfigMergerMain,\n WorkspaceDepsUpdates,\n WorkspaceDepsConflicts,\n WorkspaceConfigUpdateResult,\n} from './config-merger.main.runtime';\nexport type { ConfigMergeResult } from './config-merge-result';\nexport { ComponentConfigMerger } from './component-config-merger';\nexport default ConfigMergerAspect;\nexport { ConfigMergerAspect };\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA,SAAAA,cAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,aAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AASA,SAAAE,uBAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,sBAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAkE,IAAAG,QAAA,GAAAC,OAAA,CAAAC,OAAA,GACnDC,kCAAkB"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/config-merger",
3
- "version": "0.0.4",
3
+ "version": "0.0.5",
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.4"
9
+ "version": "0.0.5"
10
10
  },
11
11
  "dependencies": {
12
12
  "lodash": "4.17.21",
@@ -17,13 +17,13 @@
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.137",
21
- "@teambit/dependency-resolver": "1.0.137",
22
- "@teambit/envs": "1.0.137",
20
+ "@teambit/builder": "1.0.138",
21
+ "@teambit/dependency-resolver": "1.0.138",
22
+ "@teambit/envs": "1.0.138",
23
23
  "@teambit/logger": "0.0.941",
24
24
  "@teambit/cli": "0.0.848",
25
- "@teambit/config": "0.0.888",
26
- "@teambit/workspace": "1.0.137"
25
+ "@teambit/config": "0.0.889",
26
+ "@teambit/workspace": "1.0.138"
27
27
  },
28
28
  "devDependencies": {
29
29
  "@types/lodash": "4.14.165",
@@ -34,7 +34,7 @@
34
34
  "@teambit/harmony.envs.core-aspect-env": "0.0.19"
35
35
  },
36
36
  "peerDependencies": {
37
- "@teambit/legacy": "1.0.636"
37
+ "@teambit/legacy": "1.0.637"
38
38
  },
39
39
  "license": "Apache-2.0",
40
40
  "optionalDependencies": {},