@teambit/config-merger 0.0.91 → 0.0.93

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,4 +1,4 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
2
  <testsuites tests="0" failures="0" errors="0" skipped="0">
3
- <testsuite name="teambit.workspace/config-merger@0.0.91" tests="0" failures="0" errors="0" skipped="0"/>
3
+ <testsuite name="teambit.workspace/config-merger@0.0.93" tests="0" failures="0" errors="0" skipped="0"/>
4
4
  </testsuites>
@@ -458,7 +458,7 @@
458
458
  "__schema": "VariableLikeSchema",
459
459
  "location": {
460
460
  "filePath": "config-merger.main.runtime.ts",
461
- "line": 489,
461
+ "line": 490,
462
462
  "character": 3
463
463
  },
464
464
  "signature": "(property) ConfigMergerMain.slots: never[]",
@@ -467,7 +467,7 @@
467
467
  "__schema": "InferenceTypeSchema",
468
468
  "location": {
469
469
  "filePath": "config-merger.main.runtime.ts",
470
- "line": 489,
470
+ "line": 490,
471
471
  "character": 3
472
472
  },
473
473
  "type": "never[]"
@@ -479,7 +479,7 @@
479
479
  "__schema": "VariableLikeSchema",
480
480
  "location": {
481
481
  "filePath": "config-merger.main.runtime.ts",
482
- "line": 490,
482
+ "line": 491,
483
483
  "character": 3
484
484
  },
485
485
  "signature": "(property) ConfigMergerMain.dependencies: Aspect[]",
@@ -488,7 +488,7 @@
488
488
  "__schema": "InferenceTypeSchema",
489
489
  "location": {
490
490
  "filePath": "config-merger.main.runtime.ts",
491
- "line": 490,
491
+ "line": 491,
492
492
  "character": 3
493
493
  },
494
494
  "type": "Aspect[]"
@@ -500,7 +500,7 @@
500
500
  "__schema": "VariableLikeSchema",
501
501
  "location": {
502
502
  "filePath": "config-merger.main.runtime.ts",
503
- "line": 491,
503
+ "line": 492,
504
504
  "character": 3
505
505
  },
506
506
  "signature": "(property) ConfigMergerMain.runtime: RuntimeDefinition",
@@ -509,7 +509,7 @@
509
509
  "__schema": "InferenceTypeSchema",
510
510
  "location": {
511
511
  "filePath": "config-merger.main.runtime.ts",
512
- "line": 491,
512
+ "line": 492,
513
513
  "character": 3
514
514
  },
515
515
  "type": "RuntimeDefinition"
@@ -521,7 +521,7 @@
521
521
  "__schema": "FunctionLikeSchema",
522
522
  "location": {
523
523
  "filePath": "config-merger.main.runtime.ts",
524
- "line": 492,
524
+ "line": 493,
525
525
  "character": 3
526
526
  },
527
527
  "signature": "(method) ConfigMergerMain.provider([workspace, config, loggerMain, depsResolver]: [\n Workspace,\n ConfigMain,\n LoggerMain,\n DependencyResolverMain\n]): Promise<ConfigMergerMain>",
@@ -531,7 +531,7 @@
531
531
  "__schema": "ParameterSchema",
532
532
  "location": {
533
533
  "filePath": "config-merger.main.runtime.ts",
534
- "line": 492,
534
+ "line": 493,
535
535
  "character": 25
536
536
  },
537
537
  "name": "[ workspace, config, loggerMain, depsResolver ]",
@@ -539,7 +539,7 @@
539
539
  "__schema": "TupleTypeSchema",
540
540
  "location": {
541
541
  "filePath": "config-merger.main.runtime.ts",
542
- "line": 492,
542
+ "line": 493,
543
543
  "character": 72
544
544
  },
545
545
  "elements": [
@@ -547,7 +547,7 @@
547
547
  "__schema": "TypeRefSchema",
548
548
  "location": {
549
549
  "filePath": "config-merger.main.runtime.ts",
550
- "line": 493,
550
+ "line": 494,
551
551
  "character": 5
552
552
  },
553
553
  "name": "Workspace",
@@ -560,7 +560,7 @@
560
560
  "__schema": "TypeRefSchema",
561
561
  "location": {
562
562
  "filePath": "config-merger.main.runtime.ts",
563
- "line": 494,
563
+ "line": 495,
564
564
  "character": 5
565
565
  },
566
566
  "name": "ConfigMain",
@@ -573,7 +573,7 @@
573
573
  "__schema": "TypeRefSchema",
574
574
  "location": {
575
575
  "filePath": "config-merger.main.runtime.ts",
576
- "line": 495,
576
+ "line": 496,
577
577
  "character": 5
578
578
  },
579
579
  "name": "LoggerMain",
@@ -586,7 +586,7 @@
586
586
  "__schema": "TypeRefSchema",
587
587
  "location": {
588
588
  "filePath": "config-merger.main.runtime.ts",
589
- "line": 496,
589
+ "line": 497,
590
590
  "character": 5
591
591
  },
592
592
  "name": "DependencyResolverMain",
@@ -605,7 +605,7 @@
605
605
  "__schema": "InferenceTypeSchema",
606
606
  "location": {
607
607
  "filePath": "config-merger.main.runtime.ts",
608
- "line": 492,
608
+ "line": 493,
609
609
  "character": 3
610
610
  },
611
611
  "type": "Promise<ConfigMergerMain>"
@@ -2246,7 +2246,7 @@
2246
2246
  "__schema": "VariableLikeSchema",
2247
2247
  "location": {
2248
2248
  "filePath": "config-merger.main.runtime.ts",
2249
- "line": 489,
2249
+ "line": 490,
2250
2250
  "character": 3
2251
2251
  },
2252
2252
  "signature": "(property) ConfigMergerMain.slots: never[]",
@@ -2255,7 +2255,7 @@
2255
2255
  "__schema": "InferenceTypeSchema",
2256
2256
  "location": {
2257
2257
  "filePath": "config-merger.main.runtime.ts",
2258
- "line": 489,
2258
+ "line": 490,
2259
2259
  "character": 3
2260
2260
  },
2261
2261
  "type": "never[]"
@@ -2267,7 +2267,7 @@
2267
2267
  "__schema": "VariableLikeSchema",
2268
2268
  "location": {
2269
2269
  "filePath": "config-merger.main.runtime.ts",
2270
- "line": 490,
2270
+ "line": 491,
2271
2271
  "character": 3
2272
2272
  },
2273
2273
  "signature": "(property) ConfigMergerMain.dependencies: Aspect[]",
@@ -2276,7 +2276,7 @@
2276
2276
  "__schema": "InferenceTypeSchema",
2277
2277
  "location": {
2278
2278
  "filePath": "config-merger.main.runtime.ts",
2279
- "line": 490,
2279
+ "line": 491,
2280
2280
  "character": 3
2281
2281
  },
2282
2282
  "type": "Aspect[]"
@@ -2288,7 +2288,7 @@
2288
2288
  "__schema": "VariableLikeSchema",
2289
2289
  "location": {
2290
2290
  "filePath": "config-merger.main.runtime.ts",
2291
- "line": 491,
2291
+ "line": 492,
2292
2292
  "character": 3
2293
2293
  },
2294
2294
  "signature": "(property) ConfigMergerMain.runtime: RuntimeDefinition",
@@ -2297,7 +2297,7 @@
2297
2297
  "__schema": "InferenceTypeSchema",
2298
2298
  "location": {
2299
2299
  "filePath": "config-merger.main.runtime.ts",
2300
- "line": 491,
2300
+ "line": 492,
2301
2301
  "character": 3
2302
2302
  },
2303
2303
  "type": "RuntimeDefinition"
@@ -2309,7 +2309,7 @@
2309
2309
  "__schema": "FunctionLikeSchema",
2310
2310
  "location": {
2311
2311
  "filePath": "config-merger.main.runtime.ts",
2312
- "line": 492,
2312
+ "line": 493,
2313
2313
  "character": 3
2314
2314
  },
2315
2315
  "signature": "(method) ConfigMergerMain.provider([workspace, config, loggerMain, depsResolver]: [\n Workspace,\n ConfigMain,\n LoggerMain,\n DependencyResolverMain\n]): Promise<ConfigMergerMain>",
@@ -2319,7 +2319,7 @@
2319
2319
  "__schema": "ParameterSchema",
2320
2320
  "location": {
2321
2321
  "filePath": "config-merger.main.runtime.ts",
2322
- "line": 492,
2322
+ "line": 493,
2323
2323
  "character": 25
2324
2324
  },
2325
2325
  "name": "[ workspace, config, loggerMain, depsResolver ]",
@@ -2327,7 +2327,7 @@
2327
2327
  "__schema": "TupleTypeSchema",
2328
2328
  "location": {
2329
2329
  "filePath": "config-merger.main.runtime.ts",
2330
- "line": 492,
2330
+ "line": 493,
2331
2331
  "character": 72
2332
2332
  },
2333
2333
  "elements": [
@@ -2335,7 +2335,7 @@
2335
2335
  "__schema": "TypeRefSchema",
2336
2336
  "location": {
2337
2337
  "filePath": "config-merger.main.runtime.ts",
2338
- "line": 493,
2338
+ "line": 494,
2339
2339
  "character": 5
2340
2340
  },
2341
2341
  "name": "Workspace",
@@ -2348,7 +2348,7 @@
2348
2348
  "__schema": "TypeRefSchema",
2349
2349
  "location": {
2350
2350
  "filePath": "config-merger.main.runtime.ts",
2351
- "line": 494,
2351
+ "line": 495,
2352
2352
  "character": 5
2353
2353
  },
2354
2354
  "name": "ConfigMain",
@@ -2361,7 +2361,7 @@
2361
2361
  "__schema": "TypeRefSchema",
2362
2362
  "location": {
2363
2363
  "filePath": "config-merger.main.runtime.ts",
2364
- "line": 495,
2364
+ "line": 496,
2365
2365
  "character": 5
2366
2366
  },
2367
2367
  "name": "LoggerMain",
@@ -2374,7 +2374,7 @@
2374
2374
  "__schema": "TypeRefSchema",
2375
2375
  "location": {
2376
2376
  "filePath": "config-merger.main.runtime.ts",
2377
- "line": 496,
2377
+ "line": 497,
2378
2378
  "character": 5
2379
2379
  },
2380
2380
  "name": "DependencyResolverMain",
@@ -2393,7 +2393,7 @@
2393
2393
  "__schema": "InferenceTypeSchema",
2394
2394
  "location": {
2395
2395
  "filePath": "config-merger.main.runtime.ts",
2396
- "line": 492,
2396
+ "line": 493,
2397
2397
  "character": 3
2398
2398
  },
2399
2399
  "type": "Promise<ConfigMergerMain>"
@@ -2411,7 +2411,7 @@
2411
2411
  "__schema": "UnImplementedSchema",
2412
2412
  "location": {
2413
2413
  "filePath": "config-merger.main.runtime.ts",
2414
- "line": 505,
2414
+ "line": 506,
2415
2415
  "character": 16
2416
2416
  },
2417
2417
  "name": "ConfigMergerMain",
@@ -2535,7 +2535,7 @@
2535
2535
  "__schema": "UnImplementedSchema",
2536
2536
  "location": {
2537
2537
  "filePath": "config-merger.main.runtime.ts",
2538
- "line": 503,
2538
+ "line": 504,
2539
2539
  "character": 1
2540
2540
  },
2541
2541
  "name": "ConfigMergerAspect.addRuntime(ConfigMergerMain);",
@@ -3842,7 +3842,7 @@
3842
3842
  "componentId": {
3843
3843
  "scope": "teambit.workspace",
3844
3844
  "name": "config-merger",
3845
- "version": "0.0.91"
3845
+ "version": "0.0.93"
3846
3846
  },
3847
3847
  "taggedModuleExports": []
3848
3848
  }
@@ -357,7 +357,8 @@ see the conflicts below and edit your workspace.jsonc as you see fit.`;
357
357
  const deps = this.depsResolver.getDependenciesFromLegacyComponent(component);
358
358
  deps.forEach(dep => {
359
359
  if (dep.source !== 'auto') return;
360
- const depId = dep.idWithoutVersion;
360
+ const depId = dep.getPackageName?.();
361
+ if (!depId) return; // unclear when this happens.
361
362
  if (!workspacePolicyObj[depId]) return;
362
363
  if (workspacePolicyObj[depId] === dep.version) return;
363
364
  if (componentDepsWithMultipleVer[depId]?.includes(dep.version)) return;
@@ -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","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 { 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.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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","ignoreList":[]}
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 (!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.91",
3
+ "version": "0.0.93",
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.91"
9
+ "version": "0.0.93"
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.224",
21
- "@teambit/dependency-resolver": "1.0.224",
22
- "@teambit/envs": "1.0.224",
20
+ "@teambit/builder": "1.0.226",
21
+ "@teambit/dependency-resolver": "1.0.226",
22
+ "@teambit/envs": "1.0.226",
23
23
  "@teambit/logger": "0.0.952",
24
24
  "@teambit/cli": "0.0.859",
25
25
  "@teambit/component-package-version": "0.0.433",
26
- "@teambit/config": "0.0.975",
27
- "@teambit/workspace": "1.0.224"
26
+ "@teambit/config": "0.0.977",
27
+ "@teambit/workspace": "1.0.226"
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.27"
36
36
  },
37
37
  "peerDependencies": {
38
- "@teambit/legacy": "1.0.680"
38
+ "@teambit/legacy": "1.0.681"
39
39
  },
40
40
  "license": "Apache-2.0",
41
41
  "optionalDependencies": {},