@teambit/config-merger 0.0.662 → 0.0.664

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.
@@ -5,6 +5,11 @@ import type { ExtensionDataList } from '@teambit/legacy.extension-data';
5
5
  import type { MergeStrategy } from '@teambit/component.modules.merge-helper';
6
6
  import { ConfigMergeResult } from './config-merge-result';
7
7
  export type GenericConfigOrRemoved = Record<string, any> | '-';
8
+ export type PolicyDependency = {
9
+ name: string;
10
+ version: string;
11
+ force?: boolean;
12
+ };
8
13
  export declare const conflictIndicator = "CONFLICT::";
9
14
  export type MergeStrategyResult = {
10
15
  id: string;
@@ -458,13 +458,13 @@ class ComponentConfigMerger {
458
458
  };
459
459
  if (this.areConfigsEqual(currentConfig, otherConfig)) {
460
460
  // No need to add unchanged config deps here - they will be rescued by
461
- // addConfigDepsFromModelToConfigMerge() in aspects-merger during component loading
461
+ // mergeScopeSpecificDepsPolicy() in merging.main.runtime during merge processing
462
462
  return;
463
463
  }
464
464
  if (baseConfig && this.areConfigsEqual(baseConfig, otherConfig)) {
465
465
  // was changed on current
466
466
  // No need to add unchanged config deps here - they will be rescued by
467
- // addConfigDepsFromModelToConfigMerge() in aspects-merger during component loading
467
+ // mergeScopeSpecificDepsPolicy() in merging.main.runtime during merge processing
468
468
  return;
469
469
  }
470
470
  if (currentConfig === '-' || otherConfig === '-') {
@@ -477,6 +477,20 @@ class ComponentConfigMerger {
477
477
  addVariantPolicyEntryToPolicy(dep);
478
478
  });
479
479
  }
480
+ // Check if any dependencies in current were deleted on other
481
+ // If a dependency exists in base and current but not in other, it was deleted on other
482
+ currentConfigPolicy.forEach(currentDep => {
483
+ const baseDep = baseConfigPolicy?.find(d => d.dependencyId === currentDep.dependencyId);
484
+ const otherDep = otherConfigPolicy.find(d => d.dependencyId === currentDep.dependencyId);
485
+ if (baseDep && !otherDep) {
486
+ // Dependency was deleted on other - add it with version: '-' to mark for deletion
487
+ const depType = lifecycleToDepType[currentDep.lifecycleType];
488
+ mergedPolicy[depType].push({
489
+ name: currentDep.dependencyId,
490
+ version: '-'
491
+ });
492
+ }
493
+ });
480
494
  return;
481
495
  }
482
496
 
@@ -1 +1 @@
1
- {"version":3,"names":["_semver","data","_interopRequireDefault","require","_builder","_componentVersion","_dependencyResolver","_envs","_lodash","_configMergeResult","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","conflictIndicator","exports","ComponentConfigMerger","constructor","compIdStr","workspaceIds","otherLane","currentAspects","baseAspects","otherAspects","currentLabel","otherLabel","logger","mergeStrategy","BuilderAspect","id","otherLaneIdsStr","toComponentIds","map","toString","merge","debug","populateEnvs","results","currentExt","stringId","handledExtIds","includes","baseExt","findExtension","otherExt","mergePerStrategy","mergedConfig","conflict","currentConfig","getConfig","otherConfig","otherAspectsNotHandledResults","extensionId","hasVersion","idFromWorkspace","getIdFromWorkspace","toStringWithoutVersion","existingExt","_legacy","envResult","envStrategy","ConfigMergeResult","compact","getEnvId","ext","envsAspect","findCoreExtension","EnvsAspect","Error","env","config","currentEnv","otherEnv","baseEnv","undefined","currentEnvAspect","version","otherEnvAspect","baseEnvAspect","mergeStrategyParams","baseConfig","isIdInWorkspaceOrOtherLane","basicConfigMerge","areConfigsEqual","configA","configB","JSON","stringify","depResolverResult","depResolverStrategy","params","DependencyResolverAspect","trace","currentConfigPolicy","getPolicy","otherConfigPolicy","baseConfigPolicy","getAllDeps","dependencies","policy","d","idWithoutVersion","__type","split","existingPolicy","find","p","dependencyId","getPolicyVer","getDataPolicy","getAutoDeps","allDeps","source","currentAutoData","currentAllData","currentDataPolicy","otherData","currentAndOtherData","uniqBy","concat","currentAndOtherComponentsData","c","baseData","getCompIdStrByPkgNameFromData","pkgName","found","packageName","getFromCurrentDataByPackageName","getFromCurrentDataPolicyByPackageName","mergedPolicy","devDependencies","peerDependencies","conflictedPolicy","hasConflict","lifecycleToDepType","runtime","dev","peer","handleConfigMerge","addVariantPolicyEntryToPolicy","dep","fromCurrentData","force","isHash","semver","satisfies","fromCurrentDataPolicy","depType","lifecycleType","name","currentAndOtherConfig","currentDep","otherDep","baseDep","currentVer","otherVer","baseVer","hasConfigForDep","depName","getDepIdAsPkgName","addSerializedDepToPolicy","lifecycle","join","depData","isEnv","currentId","versionOnOtherLane","Boolean","rawConfig","omit","VariantPolicy","fromConfigObject","entries"],"sources":["component-config-merger.ts"],"sourcesContent":["import type { ComponentID } from '@teambit/component-id';\nimport semver from 'semver';\nimport type { Logger } from '@teambit/logger';\nimport { BuilderAspect } from '@teambit/builder';\nimport { isHash } from '@teambit/component-version';\nimport type { SerializedDependency, VariantPolicyEntry } from '@teambit/dependency-resolver';\nimport { DependencyResolverAspect, VariantPolicy } from '@teambit/dependency-resolver';\nimport type { Lane } from '@teambit/objects';\nimport { EnvsAspect } from '@teambit/envs';\nimport type { ExtensionDataEntry, ExtensionDataList } from '@teambit/legacy.extension-data';\nimport type { MergeStrategy } from '@teambit/component.modules.merge-helper';\nimport { compact, omit, uniqBy } from 'lodash';\nimport { ConfigMergeResult } from './config-merge-result';\n\nexport type GenericConfigOrRemoved = Record<string, any> | '-';\n\ntype EnvData = { id: string; version?: string; config?: GenericConfigOrRemoved };\n\ntype SerializedDependencyWithPolicy = SerializedDependency & { policy?: string; packageName?: string };\n\nexport const conflictIndicator = 'CONFLICT::';\n\nexport type MergeStrategyResult = {\n id: string;\n mergedConfig?: GenericConfigOrRemoved;\n conflict?: Record<string, any>;\n};\ntype MergeStrategyParamsWithRemoved = {\n id: string;\n currentConfig: GenericConfigOrRemoved;\n otherConfig: GenericConfigOrRemoved;\n baseConfig?: GenericConfigOrRemoved;\n};\ntype MergeStrategyParams = {\n id: string;\n currentExt: ExtensionDataEntry;\n otherExt: ExtensionDataEntry;\n baseExt?: ExtensionDataEntry;\n};\n\n/**\n * perform 3-way merge of component configuration (aspects).\n * normally this is needed when merging one lane into another. the component may have different aspects config in each lane.\n * the baseAspects are the aspects of the component in the diversion point (the common ancestor of the two lanes).\n * the currentAspects are the aspects of the component in the current lane.\n * the otherAspects are the aspects of the component in the other lane. this is the lane we merge into the current lane.\n *\n * the basic merging strategy is a simple comparison between the aspect-configs, if they're different, we have a conflict.\n * we have two special cases:\n *\n * 1. dependency-resolver: we do a deeper check for the policy, we compare each dependency separately. also, we take\n * into account not only the config, but also the data. this is needed because some dependencies are automatically\n * added by Bit (from the import statements in the code) and they're not in the config. the final config has the deps\n * from both sources, the config and the data. The way we know to differentiate between them is by the \"force\" prop.\n * the config has always force: true.\n *\n * 2. envs: if we don't treat it specially, the user will need to make the change not only in the envs aspect, but also\n * in the deps-resolver (because the env is added as a devDependency) and also in the aspect itself (because\n * teambit.envs/env has only the id and not the version). to make it simpler, we ignore the envs in the deps-resolver\n * we ignore the individual aspect that is the env itself. we only show teambit.envs/env and we put the env id and\n * version. later, when the component is loaded, we split the id and the version and put them in the correct places.\n * see workspace.componentExtension / adjustEnvsOnConfigMerge for more details.\n */\nexport class ComponentConfigMerger {\n private currentEnv: EnvData;\n private otherEnv: EnvData;\n private baseEnv?: EnvData;\n private handledExtIds: string[] = [BuilderAspect.id]; // don't try to merge builder, it's possible that at one end it wasn't built yet, so it's empty\n private otherLaneIdsStr: string[];\n constructor(\n private compIdStr: string,\n private workspaceIds: ComponentID[],\n otherLane: Lane | undefined,\n private currentAspects: ExtensionDataList,\n private baseAspects: ExtensionDataList,\n private otherAspects: ExtensionDataList,\n private currentLabel: string,\n private otherLabel: string,\n private logger: Logger,\n private mergeStrategy: MergeStrategy\n ) {\n this.otherLaneIdsStr = otherLane?.toComponentIds().map((id) => id.toString()) || [];\n }\n\n merge(): ConfigMergeResult {\n this.logger.debug(`\\n************** start config-merger for ${this.compIdStr} **************`);\n this.logger.debug(`currentLabel: ${this.currentLabel}`);\n this.logger.debug(`otherLabel: ${this.otherLabel}`);\n this.populateEnvs();\n const results = this.currentAspects.map((currentExt) => {\n const id = currentExt.stringId;\n if (this.handledExtIds.includes(id)) return null;\n this.handledExtIds.push(id);\n const baseExt = this.baseAspects.findExtension(id, true);\n const otherExt = this.otherAspects.findExtension(id, true);\n if (otherExt) {\n // try to 3-way-merge\n return this.mergePerStrategy({ id, currentExt, otherExt, baseExt });\n }\n // exist in current but not in other\n if (baseExt) {\n // was removed on other\n if (this.mergeStrategy === 'theirs') {\n return { id, mergedConfig: '-' } as MergeStrategyResult;\n }\n if (this.mergeStrategy === 'ours') {\n return null;\n }\n return { id, conflict: { currentConfig: this.getConfig(currentExt), otherConfig: '-' } };\n }\n // exist in current but not in other and base, so it got created on current. nothing to do.\n return null;\n });\n const otherAspectsNotHandledResults = this.otherAspects.map((otherExt) => {\n let id = otherExt.stringId;\n if (this.handledExtIds.includes(id)) return null;\n this.handledExtIds.push(id);\n if (otherExt.extensionId && otherExt.extensionId.hasVersion()) {\n // avoid using the id from the other lane if it exits in the workspace. prefer the id from the workspace.\n const idFromWorkspace = this.getIdFromWorkspace(otherExt.extensionId.toStringWithoutVersion());\n if (idFromWorkspace) {\n const existingExt = this.currentAspects.findExtension(otherExt.extensionId.toStringWithoutVersion(), true);\n if (existingExt) return null; // the aspect is set currently, no need to add it again.\n id = idFromWorkspace._legacy.toString();\n }\n }\n const baseExt = this.baseAspects.findExtension(id, true);\n if (baseExt) {\n // was removed on current\n return { id, conflict: { currentConfig: '-', otherConfig: this.getConfig(otherExt) } };\n }\n // exist in other but not in current and base, so it got created on other.\n return { id, mergedConfig: this.getConfig(otherExt) };\n });\n const envResult = this.envStrategy();\n this.logger.debug(`*** end config-merger for ${this.compIdStr} ***\\n`);\n return new ConfigMergeResult(\n this.compIdStr,\n this.currentLabel,\n this.otherLabel,\n compact([...results, ...otherAspectsNotHandledResults, envResult])\n );\n }\n\n private populateEnvs() {\n // populate ids\n const getEnvId = (ext: ExtensionDataList) => {\n const envsAspect = ext.findCoreExtension(EnvsAspect.id);\n if (!envsAspect) throw new Error(`unable to find ${EnvsAspect.id} aspect for ${this.compIdStr}`);\n const env = envsAspect.config.env || envsAspect.data.id;\n if (!env)\n throw new Error(`unable to find env for ${this.compIdStr}, the config and data of ${EnvsAspect.id} are empty}`);\n return env;\n };\n const currentEnv = getEnvId(this.currentAspects);\n this.currentEnv = { id: currentEnv };\n const otherEnv = getEnvId(this.otherAspects);\n this.otherEnv = { id: otherEnv };\n const baseEnv = this.baseAspects ? getEnvId(this.baseAspects) : undefined;\n if (baseEnv) this.baseEnv = { id: baseEnv };\n\n // populate version\n const currentEnvAspect = this.currentAspects.findExtension(currentEnv, true);\n if (currentEnvAspect) {\n this.handledExtIds.push(currentEnvAspect.stringId);\n this.currentEnv.version = currentEnvAspect.extensionId?.version;\n this.currentEnv.config = this.getConfig(currentEnvAspect);\n }\n const otherEnvAspect = this.otherAspects.findExtension(otherEnv, true);\n if (otherEnvAspect) {\n this.handledExtIds.push(otherEnvAspect.stringId);\n this.otherEnv.version = otherEnvAspect.extensionId?.version;\n this.otherEnv.config = this.getConfig(otherEnvAspect);\n }\n if (this.baseEnv) {\n const baseEnvAspect = this.baseAspects.findExtension(baseEnv, true);\n if (baseEnvAspect) {\n this.baseEnv.version = baseEnvAspect.extensionId?.version;\n this.baseEnv.config = this.getConfig(baseEnvAspect);\n }\n }\n }\n\n private envStrategy(): MergeStrategyResult | null {\n const mergeStrategyParams: MergeStrategyParamsWithRemoved = {\n id: EnvsAspect.id,\n currentConfig: {\n env: this.currentEnv.version ? `${this.currentEnv.id}@${this.currentEnv.version}` : this.currentEnv.id,\n },\n otherConfig: { env: this.otherEnv.version ? `${this.otherEnv.id}@${this.otherEnv.version}` : this.otherEnv.id },\n };\n if (this.baseEnv) {\n mergeStrategyParams.baseConfig = {\n env: this.baseEnv?.version ? `${this.baseEnv.id}@${this.baseEnv.version}` : this.baseEnv?.id,\n };\n }\n if (this.currentEnv.id === this.otherEnv.id && this.currentEnv.version === this.otherEnv.version) {\n return null;\n }\n if (this.isIdInWorkspaceOrOtherLane(this.currentEnv.id, this.otherEnv.version)) {\n // the env currently used is part of the workspace, that's what the user needs. don't try to resolve anything.\n return null;\n }\n return this.basicConfigMerge(mergeStrategyParams);\n }\n\n private areConfigsEqual(configA: GenericConfigOrRemoved, configB: GenericConfigOrRemoved) {\n return JSON.stringify(configA) === JSON.stringify(configB);\n }\n\n private mergePerStrategy(mergeStrategyParams: MergeStrategyParams): MergeStrategyResult | null {\n const { id, currentExt, otherExt, baseExt } = mergeStrategyParams;\n const depResolverResult = this.depResolverStrategy(mergeStrategyParams);\n\n if (depResolverResult) {\n // if (depResolverResult.mergedConfig || depResolverResult?.conflict) console.log(\"\\n\\nDepResolverResult\", this.compIdStr, '\\n', JSON.stringify(depResolverResult, undefined, 2))\n return depResolverResult;\n }\n const currentConfig = this.getConfig(currentExt);\n const otherConfig = this.getConfig(otherExt);\n const baseConfig = baseExt ? this.getConfig(baseExt) : undefined;\n\n return this.basicConfigMerge({ id, currentConfig, otherConfig, baseConfig });\n }\n\n private basicConfigMerge(mergeStrategyParams: MergeStrategyParamsWithRemoved) {\n const { id, currentConfig, otherConfig, baseConfig } = mergeStrategyParams;\n if (this.areConfigsEqual(currentConfig, otherConfig)) {\n return null;\n }\n if (baseConfig && this.areConfigsEqual(baseConfig, otherConfig)) {\n // was changed on current\n return null;\n }\n if (baseConfig && this.areConfigsEqual(baseConfig, currentConfig)) {\n // was changed on other\n return { id, mergedConfig: otherConfig };\n }\n // either no baseConfig, or baseConfig is also different from both: other and local. that's a conflict.\n if (this.mergeStrategy === 'theirs') {\n return { id, mergedConfig: otherConfig };\n }\n if (this.mergeStrategy === 'ours') {\n return null;\n }\n return { id, conflict: { currentConfig, otherConfig, baseConfig } };\n }\n\n /**\n * Performs a specialized 3-way merge for the dependency-resolver aspect configuration.\n *\n * This method handles merging of dependency configurations which is more complex than other aspects because:\n * 1. Dependencies come from TWO sources:\n * - Config (policy): explicitly configured by user (marked with force: true)\n * - Data (auto): automatically detected from import statements in code (source: 'auto')\n * 2. We need to merge both sources together to get the complete dependency picture\n *\n * The merge process:\n * 1. Handles config policy merge (explicit dependencies):\n * - Compares each dependency in current vs other vs base config policies\n * - Uses 3-way merge: if base==other, use current; if base==current, use other; else conflict\n * - Skips dependencies that exist in workspace or other lane (they'll be resolved locally)\n *\n * 2. Handles data dependencies merge (auto-detected dependencies):\n * - Merges auto-detected deps from both current and other\n * - For each dependency, determines if it should be added, kept, or marked as conflict\n * - Ignores environment dependencies (handled separately by envStrategy)\n * - Skips workspace dependencies (resolved to workspace version)\n *\n * 3. Conflict detection:\n * - Version conflicts marked with special format: \"CONFLICT::currentVer::otherVer::\"\n * - Respects merge strategy (ours/theirs/manual) for automatic resolution\n *\n * Returns:\n * - undefined if this is not the dependency-resolver aspect\n * - MergeStrategyResult with either:\n * - mergedConfig: successfully merged dependency policy\n * - conflict: conflicted dependencies marked with version conflicts\n */\n private depResolverStrategy(params: MergeStrategyParams): MergeStrategyResult | undefined {\n if (params.id !== DependencyResolverAspect.id) return undefined;\n this.logger.trace(`start depResolverStrategy for ${this.compIdStr}`);\n const { currentExt, otherExt, baseExt } = params;\n\n const currentConfig = this.getConfig(currentExt);\n const currentConfigPolicy = this.getPolicy(currentConfig);\n const otherConfig = this.getConfig(otherExt);\n const otherConfigPolicy = this.getPolicy(otherConfig);\n\n const baseConfig = baseExt ? this.getConfig(baseExt) : undefined;\n const baseConfigPolicy = baseConfig ? this.getPolicy(baseConfig) : undefined;\n\n this.logger.debug(`currentConfig, ${JSON.stringify(currentConfig, undefined, 2)}`);\n this.logger.debug(`otherConfig, ${JSON.stringify(otherConfig, undefined, 2)}`);\n this.logger.debug(`baseConfig, ${JSON.stringify(baseConfig, undefined, 2)}`);\n\n const getAllDeps = (ext: ExtensionDataList): SerializedDependencyWithPolicy[] => {\n const data = ext.findCoreExtension(DependencyResolverAspect.id)?.data.dependencies;\n if (!data) return [];\n const policy = ext.findCoreExtension(DependencyResolverAspect.id)?.data.policy || [];\n return data.map((d) => {\n const idWithoutVersion = d.__type === 'package' ? d.id : d.id.split('@')[0];\n const existingPolicy = policy.find((p) => p.dependencyId === idWithoutVersion);\n const getPolicyVer = () => {\n if (d.__type === 'package') return undefined; // for packages, the policy is already the version\n if (existingPolicy) return existingPolicy.value.version; // currently it's missing, will be implemented by @Gilad\n return d.version;\n // if (!semver.valid(d.version)) return d.version; // could be a hash\n // // default to `^` or ~ if starts with zero, until we save the policy from the workspace during tag/snap.\n // return d.version.startsWith('0.') ? `~${d.version}` : `^${d.version}`;\n };\n return {\n ...d,\n id: idWithoutVersion,\n policy: getPolicyVer(),\n };\n });\n };\n const getDataPolicy = (ext: ExtensionDataList): VariantPolicyEntry[] => {\n return ext.findCoreExtension(DependencyResolverAspect.id)?.data.policy || [];\n };\n\n const getAutoDeps = (ext: ExtensionDataList): SerializedDependencyWithPolicy[] => {\n const allDeps = getAllDeps(ext);\n return allDeps.filter((d) => d.source === 'auto');\n };\n\n const currentAutoData = getAutoDeps(this.currentAspects);\n const currentAllData = getAllDeps(this.currentAspects);\n const currentDataPolicy = getDataPolicy(this.currentAspects);\n const otherData = getAutoDeps(this.otherAspects);\n const currentAndOtherData = uniqBy(currentAutoData.concat(otherData), (d) => d.id);\n const currentAndOtherComponentsData = currentAndOtherData.filter((c) => c.__type === 'component');\n const baseData = getAutoDeps(this.baseAspects);\n\n const getCompIdStrByPkgNameFromData = (pkgName: string): string | undefined => {\n const found = currentAndOtherComponentsData.find((d) => d.packageName === pkgName);\n return found?.id;\n };\n\n const getFromCurrentDataByPackageName = (pkgName: string) => {\n return currentAllData.find((d) => {\n if (d.__type === 'package') return d.id === pkgName;\n return d.packageName === pkgName;\n });\n };\n\n const getFromCurrentDataPolicyByPackageName = (pkgName: string) => {\n return currentDataPolicy.find((d) => d.dependencyId === pkgName);\n };\n\n const mergedPolicy = {\n dependencies: [],\n devDependencies: [],\n peerDependencies: [],\n };\n const conflictedPolicy = {\n dependencies: [],\n devDependencies: [],\n peerDependencies: [],\n };\n let hasConflict = false;\n const lifecycleToDepType = {\n runtime: 'dependencies',\n dev: 'devDependencies',\n peer: 'peerDependencies',\n };\n const handleConfigMerge = () => {\n const addVariantPolicyEntryToPolicy = (dep: VariantPolicyEntry) => {\n const compIdStr = getCompIdStrByPkgNameFromData(dep.dependencyId);\n if (compIdStr && this.isIdInWorkspaceOrOtherLane(compIdStr, dep.value.version)) {\n // no need to add if the id exists in the workspace (regardless the version)\n return;\n }\n const fromCurrentData = getFromCurrentDataByPackageName(dep.dependencyId);\n if (fromCurrentData && !dep.force) {\n if (fromCurrentData.version === dep.value.version) return;\n if (\n !isHash(fromCurrentData.version) &&\n !isHash(dep.value.version) &&\n semver.satisfies(fromCurrentData.version, dep.value.version)\n ) {\n return;\n }\n }\n const fromCurrentDataPolicy = getFromCurrentDataPolicyByPackageName(dep.dependencyId);\n if (fromCurrentDataPolicy && fromCurrentDataPolicy.value.version === dep.value.version) {\n // -- updated comment --\n // not sure why this block is needed. this gets called also from this if: `if (baseConfig && this.areConfigsEqual(baseConfig, currentConfig)) {`\n // and in this case, it's possible that current/base has 5 deps, and other just added one and it has 6.\n // in which case, we do need to add all these 5 in additional to the new one. otherwise, only the new one appears in the final\n // merged object, and all the 5 deps are lost.\n // --- previous comment ---\n // that's a bug. if it's in the data.policy, it should be in data.dependencies.\n // return;\n }\n const depType = lifecycleToDepType[dep.lifecycleType];\n mergedPolicy[depType].push({\n name: dep.dependencyId,\n version: dep.value.version,\n force: dep.force,\n });\n };\n\n if (this.areConfigsEqual(currentConfig, otherConfig)) {\n // No need to add unchanged config deps here - they will be rescued by\n // addConfigDepsFromModelToConfigMerge() in aspects-merger during component loading\n return;\n }\n if (baseConfig && this.areConfigsEqual(baseConfig, otherConfig)) {\n // was changed on current\n // No need to add unchanged config deps here - they will be rescued by\n // addConfigDepsFromModelToConfigMerge() in aspects-merger during component loading\n return;\n }\n if (currentConfig === '-' || otherConfig === '-') {\n throw new Error('not implemented. Is it possible to have it as minus?');\n }\n if (baseConfig && this.areConfigsEqual(baseConfig, currentConfig)) {\n // was changed on other\n if (otherConfigPolicy.length) {\n otherConfigPolicy.forEach((dep) => {\n addVariantPolicyEntryToPolicy(dep);\n });\n }\n return;\n }\n\n // either no baseConfig, or baseConfig is also different from both: other and local. that's a conflict.\n if (!currentConfig.policy && !otherConfig.policy) return;\n const currentAndOtherConfig = uniqBy(currentConfigPolicy.concat(otherConfigPolicy), (d) => d.dependencyId);\n currentAndOtherConfig.forEach((dep) => {\n const depType = lifecycleToDepType[dep.lifecycleType];\n const currentDep = currentConfigPolicy.find((d) => d.dependencyId === dep.dependencyId);\n const otherDep = otherConfigPolicy.find((d) => d.dependencyId === dep.dependencyId);\n const baseDep = baseConfigPolicy?.find((d) => d.dependencyId === dep.dependencyId);\n\n if (!otherDep) {\n return;\n }\n if (!currentDep) {\n // only on other\n addVariantPolicyEntryToPolicy(otherDep);\n return;\n }\n const currentVer = currentDep.value.version;\n const otherVer = otherDep.value.version;\n if (currentVer === otherVer) {\n return;\n }\n const baseVer = baseDep?.value.version;\n if (baseVer && baseVer === otherVer) {\n return;\n }\n if (baseVer && baseVer === currentVer) {\n addVariantPolicyEntryToPolicy(otherDep);\n return;\n }\n const compIdStr = getCompIdStrByPkgNameFromData(dep.dependencyId);\n if (compIdStr && this.isIdInWorkspaceOrOtherLane(compIdStr, otherVer)) {\n // no need to add if the id exists in the workspace (regardless the version)\n return;\n }\n if (this.mergeStrategy === 'theirs') {\n addVariantPolicyEntryToPolicy(otherDep);\n return;\n }\n if (this.mergeStrategy === 'ours') {\n return;\n }\n\n hasConflict = true;\n conflictedPolicy[depType].push({\n name: currentDep.dependencyId,\n version: `${conflictIndicator}${currentVer}::${otherVer}::`,\n force: currentDep.force,\n });\n });\n };\n\n handleConfigMerge();\n\n const hasConfigForDep = (depType: string, depName: string) => mergedPolicy[depType].find((d) => d.name === depName);\n const getDepIdAsPkgName = (dep: SerializedDependencyWithPolicy) => {\n if (dep.__type !== 'component') {\n return dep.id;\n }\n return dep.packageName;\n };\n\n const addSerializedDepToPolicy = (dep: SerializedDependencyWithPolicy) => {\n const depType = lifecycleToDepType[dep.lifecycle];\n if (dep.__type === 'component' && this.isIdInWorkspaceOrOtherLane(dep.id, dep.version)) {\n return;\n }\n if (hasConfigForDep(depType, dep.id)) {\n return; // there is already config for it.\n }\n mergedPolicy[depType].push({\n name: getDepIdAsPkgName(dep),\n version: dep.policy || dep.version,\n force: false,\n });\n };\n\n this.logger.debug(\n `currentData, ${currentAllData.length}\\n${currentAllData\n .map((d) => `${d.__type} ${d.id} ${d.version}`)\n .join('\\n')}`\n );\n this.logger.debug(\n `otherData, ${otherData.length}\\n${otherData.map((d) => `${d.__type} ${d.id} ${d.version}`).join('\\n')}`\n );\n this.logger.debug(\n `baseData, ${baseData.length}\\n${baseData.map((d) => `${d.__type} ${d.id} ${d.version}`).join('\\n')}`\n );\n\n // eslint-disable-next-line complexity\n currentAndOtherData.forEach((depData) => {\n this.logger.trace(`depData.id, ${depData.id}`);\n if (this.isEnv(depData.id)) {\n // ignore the envs\n return;\n }\n const currentDep = currentAllData.find((d) => d.id === depData.id);\n const otherDep = otherData.find((d) => d.id === depData.id);\n const baseDep = baseData.find((d) => d.id === depData.id);\n\n this.logger.trace(`currentDep`, currentDep);\n this.logger.trace(`otherDep`, otherDep);\n this.logger.trace(`baseDep`, baseDep);\n if (!otherDep) {\n return;\n }\n if (!currentDep) {\n if (baseDep) {\n // exists in other and base, so it was removed from current\n return;\n }\n // only on other\n addSerializedDepToPolicy(otherDep);\n return;\n }\n\n if (currentDep.policy && otherDep.policy) {\n if (semver.satisfies(currentDep.version, otherDep.policy)) {\n return;\n }\n if (semver.satisfies(otherDep.version, currentDep.policy)) {\n return;\n }\n }\n\n const currentVer = currentDep.policy || currentDep.version;\n const otherVer = otherDep.policy || otherDep.version;\n if (currentVer === otherVer) {\n return;\n }\n const baseVer = baseDep?.policy || baseDep?.version;\n if (baseVer && baseVer === otherVer) {\n return;\n }\n const currentId = currentDep.id;\n if (currentDep.__type === 'component' && this.isIdInWorkspaceOrOtherLane(currentId, otherDep.version)) {\n // dependencies that exist in the workspace, should be ignored. they'll be resolved later to the version in the ws.\n return;\n }\n const depType = lifecycleToDepType[currentDep.lifecycle];\n if (hasConfigForDep(depType, currentDep.id)) {\n return; // there is already config for it.\n }\n if (baseVer && baseVer === currentVer) {\n addSerializedDepToPolicy(otherDep);\n return;\n }\n if (this.mergeStrategy === 'theirs') {\n addSerializedDepToPolicy(otherDep);\n return;\n }\n if (this.mergeStrategy === 'ours') {\n return;\n }\n hasConflict = true;\n conflictedPolicy[depType].push({\n name: getDepIdAsPkgName(currentDep),\n version: `${conflictIndicator}${currentVer}::${otherVer}::`,\n force: false,\n });\n });\n\n ['dependencies', 'devDependencies', 'peerDependencies'].forEach((depType) => {\n if (!mergedPolicy[depType].length) delete mergedPolicy[depType];\n if (!conflictedPolicy[depType].length) delete conflictedPolicy[depType];\n });\n\n const config = Object.keys(mergedPolicy).length ? { policy: mergedPolicy } : undefined;\n const conflict = hasConflict ? conflictedPolicy : undefined;\n\n this.logger.debug('final mergedConfig', config);\n this.logger.debug('final conflict', conflict);\n\n return { id: params.id, mergedConfig: config, conflict };\n }\n\n private isIdInWorkspaceOrOtherLane(id: string, versionOnOtherLane?: string): boolean {\n return Boolean(this.getIdFromWorkspace(id)) || this.otherLaneIdsStr.includes(`${id}@${versionOnOtherLane}`);\n }\n\n private getIdFromWorkspace(id: string): ComponentID | undefined {\n return this.workspaceIds.find((c) => c.toStringWithoutVersion() === id);\n }\n\n private isEnv(id: string) {\n return id === this.currentEnv.id || id === this.otherEnv.id;\n }\n\n private getConfig(ext: ExtensionDataEntry): GenericConfigOrRemoved {\n if (ext.rawConfig === '-') return ext.rawConfig;\n return omit(ext.rawConfig, ['__specific']);\n }\n\n private getPolicy(config): VariantPolicyEntry[] {\n if (!config.policy) return [];\n return VariantPolicy.fromConfigObject(config.policy).entries;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_semver","data","_interopRequireDefault","require","_builder","_componentVersion","_dependencyResolver","_envs","_lodash","_configMergeResult","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","conflictIndicator","exports","ComponentConfigMerger","constructor","compIdStr","workspaceIds","otherLane","currentAspects","baseAspects","otherAspects","currentLabel","otherLabel","logger","mergeStrategy","BuilderAspect","id","otherLaneIdsStr","toComponentIds","map","toString","merge","debug","populateEnvs","results","currentExt","stringId","handledExtIds","includes","baseExt","findExtension","otherExt","mergePerStrategy","mergedConfig","conflict","currentConfig","getConfig","otherConfig","otherAspectsNotHandledResults","extensionId","hasVersion","idFromWorkspace","getIdFromWorkspace","toStringWithoutVersion","existingExt","_legacy","envResult","envStrategy","ConfigMergeResult","compact","getEnvId","ext","envsAspect","findCoreExtension","EnvsAspect","Error","env","config","currentEnv","otherEnv","baseEnv","undefined","currentEnvAspect","version","otherEnvAspect","baseEnvAspect","mergeStrategyParams","baseConfig","isIdInWorkspaceOrOtherLane","basicConfigMerge","areConfigsEqual","configA","configB","JSON","stringify","depResolverResult","depResolverStrategy","params","DependencyResolverAspect","trace","currentConfigPolicy","getPolicy","otherConfigPolicy","baseConfigPolicy","getAllDeps","dependencies","policy","d","idWithoutVersion","__type","split","existingPolicy","find","p","dependencyId","getPolicyVer","getDataPolicy","getAutoDeps","allDeps","source","currentAutoData","currentAllData","currentDataPolicy","otherData","currentAndOtherData","uniqBy","concat","currentAndOtherComponentsData","c","baseData","getCompIdStrByPkgNameFromData","pkgName","found","packageName","getFromCurrentDataByPackageName","getFromCurrentDataPolicyByPackageName","mergedPolicy","devDependencies","peerDependencies","conflictedPolicy","hasConflict","lifecycleToDepType","runtime","dev","peer","handleConfigMerge","addVariantPolicyEntryToPolicy","dep","fromCurrentData","force","isHash","semver","satisfies","fromCurrentDataPolicy","depType","lifecycleType","name","currentDep","baseDep","otherDep","currentAndOtherConfig","currentVer","otherVer","baseVer","hasConfigForDep","depName","getDepIdAsPkgName","addSerializedDepToPolicy","lifecycle","join","depData","isEnv","currentId","versionOnOtherLane","Boolean","rawConfig","omit","VariantPolicy","fromConfigObject","entries"],"sources":["component-config-merger.ts"],"sourcesContent":["import type { ComponentID } from '@teambit/component-id';\nimport semver from 'semver';\nimport type { Logger } from '@teambit/logger';\nimport { BuilderAspect } from '@teambit/builder';\nimport { isHash } from '@teambit/component-version';\nimport type { SerializedDependency, VariantPolicyEntry } from '@teambit/dependency-resolver';\nimport { DependencyResolverAspect, VariantPolicy } from '@teambit/dependency-resolver';\nimport type { Lane } from '@teambit/objects';\nimport { EnvsAspect } from '@teambit/envs';\nimport type { ExtensionDataEntry, ExtensionDataList } from '@teambit/legacy.extension-data';\nimport type { MergeStrategy } from '@teambit/component.modules.merge-helper';\nimport { compact, omit, uniqBy } from 'lodash';\nimport { ConfigMergeResult } from './config-merge-result';\n\nexport type GenericConfigOrRemoved = Record<string, any> | '-';\n\ntype EnvData = { id: string; version?: string; config?: GenericConfigOrRemoved };\n\ntype SerializedDependencyWithPolicy = SerializedDependency & { policy?: string; packageName?: string };\n\nexport type PolicyDependency = {\n name: string;\n version: string;\n force?: boolean;\n};\n\nexport const conflictIndicator = 'CONFLICT::';\n\nexport type MergeStrategyResult = {\n id: string;\n mergedConfig?: GenericConfigOrRemoved;\n conflict?: Record<string, any>;\n};\ntype MergeStrategyParamsWithRemoved = {\n id: string;\n currentConfig: GenericConfigOrRemoved;\n otherConfig: GenericConfigOrRemoved;\n baseConfig?: GenericConfigOrRemoved;\n};\ntype MergeStrategyParams = {\n id: string;\n currentExt: ExtensionDataEntry;\n otherExt: ExtensionDataEntry;\n baseExt?: ExtensionDataEntry;\n};\n\n/**\n * perform 3-way merge of component configuration (aspects).\n * normally this is needed when merging one lane into another. the component may have different aspects config in each lane.\n * the baseAspects are the aspects of the component in the diversion point (the common ancestor of the two lanes).\n * the currentAspects are the aspects of the component in the current lane.\n * the otherAspects are the aspects of the component in the other lane. this is the lane we merge into the current lane.\n *\n * the basic merging strategy is a simple comparison between the aspect-configs, if they're different, we have a conflict.\n * we have two special cases:\n *\n * 1. dependency-resolver: we do a deeper check for the policy, we compare each dependency separately. also, we take\n * into account not only the config, but also the data. this is needed because some dependencies are automatically\n * added by Bit (from the import statements in the code) and they're not in the config. the final config has the deps\n * from both sources, the config and the data. The way we know to differentiate between them is by the \"force\" prop.\n * the config has always force: true.\n *\n * 2. envs: if we don't treat it specially, the user will need to make the change not only in the envs aspect, but also\n * in the deps-resolver (because the env is added as a devDependency) and also in the aspect itself (because\n * teambit.envs/env has only the id and not the version). to make it simpler, we ignore the envs in the deps-resolver\n * we ignore the individual aspect that is the env itself. we only show teambit.envs/env and we put the env id and\n * version. later, when the component is loaded, we split the id and the version and put them in the correct places.\n * see workspace.componentExtension / adjustEnvsOnConfigMerge for more details.\n */\nexport class ComponentConfigMerger {\n private currentEnv: EnvData;\n private otherEnv: EnvData;\n private baseEnv?: EnvData;\n private handledExtIds: string[] = [BuilderAspect.id]; // don't try to merge builder, it's possible that at one end it wasn't built yet, so it's empty\n private otherLaneIdsStr: string[];\n constructor(\n private compIdStr: string,\n private workspaceIds: ComponentID[],\n otherLane: Lane | undefined,\n private currentAspects: ExtensionDataList,\n private baseAspects: ExtensionDataList,\n private otherAspects: ExtensionDataList,\n private currentLabel: string,\n private otherLabel: string,\n private logger: Logger,\n private mergeStrategy: MergeStrategy\n ) {\n this.otherLaneIdsStr = otherLane?.toComponentIds().map((id) => id.toString()) || [];\n }\n\n merge(): ConfigMergeResult {\n this.logger.debug(`\\n************** start config-merger for ${this.compIdStr} **************`);\n this.logger.debug(`currentLabel: ${this.currentLabel}`);\n this.logger.debug(`otherLabel: ${this.otherLabel}`);\n this.populateEnvs();\n const results = this.currentAspects.map((currentExt) => {\n const id = currentExt.stringId;\n if (this.handledExtIds.includes(id)) return null;\n this.handledExtIds.push(id);\n const baseExt = this.baseAspects.findExtension(id, true);\n const otherExt = this.otherAspects.findExtension(id, true);\n if (otherExt) {\n // try to 3-way-merge\n return this.mergePerStrategy({ id, currentExt, otherExt, baseExt });\n }\n // exist in current but not in other\n if (baseExt) {\n // was removed on other\n if (this.mergeStrategy === 'theirs') {\n return { id, mergedConfig: '-' } as MergeStrategyResult;\n }\n if (this.mergeStrategy === 'ours') {\n return null;\n }\n return { id, conflict: { currentConfig: this.getConfig(currentExt), otherConfig: '-' } };\n }\n // exist in current but not in other and base, so it got created on current. nothing to do.\n return null;\n });\n const otherAspectsNotHandledResults = this.otherAspects.map((otherExt) => {\n let id = otherExt.stringId;\n if (this.handledExtIds.includes(id)) return null;\n this.handledExtIds.push(id);\n if (otherExt.extensionId && otherExt.extensionId.hasVersion()) {\n // avoid using the id from the other lane if it exits in the workspace. prefer the id from the workspace.\n const idFromWorkspace = this.getIdFromWorkspace(otherExt.extensionId.toStringWithoutVersion());\n if (idFromWorkspace) {\n const existingExt = this.currentAspects.findExtension(otherExt.extensionId.toStringWithoutVersion(), true);\n if (existingExt) return null; // the aspect is set currently, no need to add it again.\n id = idFromWorkspace._legacy.toString();\n }\n }\n const baseExt = this.baseAspects.findExtension(id, true);\n if (baseExt) {\n // was removed on current\n return { id, conflict: { currentConfig: '-', otherConfig: this.getConfig(otherExt) } };\n }\n // exist in other but not in current and base, so it got created on other.\n return { id, mergedConfig: this.getConfig(otherExt) };\n });\n const envResult = this.envStrategy();\n this.logger.debug(`*** end config-merger for ${this.compIdStr} ***\\n`);\n return new ConfigMergeResult(\n this.compIdStr,\n this.currentLabel,\n this.otherLabel,\n compact([...results, ...otherAspectsNotHandledResults, envResult])\n );\n }\n\n private populateEnvs() {\n // populate ids\n const getEnvId = (ext: ExtensionDataList) => {\n const envsAspect = ext.findCoreExtension(EnvsAspect.id);\n if (!envsAspect) throw new Error(`unable to find ${EnvsAspect.id} aspect for ${this.compIdStr}`);\n const env = envsAspect.config.env || envsAspect.data.id;\n if (!env)\n throw new Error(`unable to find env for ${this.compIdStr}, the config and data of ${EnvsAspect.id} are empty}`);\n return env;\n };\n const currentEnv = getEnvId(this.currentAspects);\n this.currentEnv = { id: currentEnv };\n const otherEnv = getEnvId(this.otherAspects);\n this.otherEnv = { id: otherEnv };\n const baseEnv = this.baseAspects ? getEnvId(this.baseAspects) : undefined;\n if (baseEnv) this.baseEnv = { id: baseEnv };\n\n // populate version\n const currentEnvAspect = this.currentAspects.findExtension(currentEnv, true);\n if (currentEnvAspect) {\n this.handledExtIds.push(currentEnvAspect.stringId);\n this.currentEnv.version = currentEnvAspect.extensionId?.version;\n this.currentEnv.config = this.getConfig(currentEnvAspect);\n }\n const otherEnvAspect = this.otherAspects.findExtension(otherEnv, true);\n if (otherEnvAspect) {\n this.handledExtIds.push(otherEnvAspect.stringId);\n this.otherEnv.version = otherEnvAspect.extensionId?.version;\n this.otherEnv.config = this.getConfig(otherEnvAspect);\n }\n if (this.baseEnv) {\n const baseEnvAspect = this.baseAspects.findExtension(baseEnv, true);\n if (baseEnvAspect) {\n this.baseEnv.version = baseEnvAspect.extensionId?.version;\n this.baseEnv.config = this.getConfig(baseEnvAspect);\n }\n }\n }\n\n private envStrategy(): MergeStrategyResult | null {\n const mergeStrategyParams: MergeStrategyParamsWithRemoved = {\n id: EnvsAspect.id,\n currentConfig: {\n env: this.currentEnv.version ? `${this.currentEnv.id}@${this.currentEnv.version}` : this.currentEnv.id,\n },\n otherConfig: { env: this.otherEnv.version ? `${this.otherEnv.id}@${this.otherEnv.version}` : this.otherEnv.id },\n };\n if (this.baseEnv) {\n mergeStrategyParams.baseConfig = {\n env: this.baseEnv?.version ? `${this.baseEnv.id}@${this.baseEnv.version}` : this.baseEnv?.id,\n };\n }\n if (this.currentEnv.id === this.otherEnv.id && this.currentEnv.version === this.otherEnv.version) {\n return null;\n }\n if (this.isIdInWorkspaceOrOtherLane(this.currentEnv.id, this.otherEnv.version)) {\n // the env currently used is part of the workspace, that's what the user needs. don't try to resolve anything.\n return null;\n }\n return this.basicConfigMerge(mergeStrategyParams);\n }\n\n private areConfigsEqual(configA: GenericConfigOrRemoved, configB: GenericConfigOrRemoved) {\n return JSON.stringify(configA) === JSON.stringify(configB);\n }\n\n private mergePerStrategy(mergeStrategyParams: MergeStrategyParams): MergeStrategyResult | null {\n const { id, currentExt, otherExt, baseExt } = mergeStrategyParams;\n const depResolverResult = this.depResolverStrategy(mergeStrategyParams);\n\n if (depResolverResult) {\n // if (depResolverResult.mergedConfig || depResolverResult?.conflict) console.log(\"\\n\\nDepResolverResult\", this.compIdStr, '\\n', JSON.stringify(depResolverResult, undefined, 2))\n return depResolverResult;\n }\n const currentConfig = this.getConfig(currentExt);\n const otherConfig = this.getConfig(otherExt);\n const baseConfig = baseExt ? this.getConfig(baseExt) : undefined;\n\n return this.basicConfigMerge({ id, currentConfig, otherConfig, baseConfig });\n }\n\n private basicConfigMerge(mergeStrategyParams: MergeStrategyParamsWithRemoved) {\n const { id, currentConfig, otherConfig, baseConfig } = mergeStrategyParams;\n if (this.areConfigsEqual(currentConfig, otherConfig)) {\n return null;\n }\n if (baseConfig && this.areConfigsEqual(baseConfig, otherConfig)) {\n // was changed on current\n return null;\n }\n if (baseConfig && this.areConfigsEqual(baseConfig, currentConfig)) {\n // was changed on other\n return { id, mergedConfig: otherConfig };\n }\n // either no baseConfig, or baseConfig is also different from both: other and local. that's a conflict.\n if (this.mergeStrategy === 'theirs') {\n return { id, mergedConfig: otherConfig };\n }\n if (this.mergeStrategy === 'ours') {\n return null;\n }\n return { id, conflict: { currentConfig, otherConfig, baseConfig } };\n }\n\n /**\n * Performs a specialized 3-way merge for the dependency-resolver aspect configuration.\n *\n * This method handles merging of dependency configurations which is more complex than other aspects because:\n * 1. Dependencies come from TWO sources:\n * - Config (policy): explicitly configured by user (marked with force: true)\n * - Data (auto): automatically detected from import statements in code (source: 'auto')\n * 2. We need to merge both sources together to get the complete dependency picture\n *\n * The merge process:\n * 1. Handles config policy merge (explicit dependencies):\n * - Compares each dependency in current vs other vs base config policies\n * - Uses 3-way merge: if base==other, use current; if base==current, use other; else conflict\n * - Skips dependencies that exist in workspace or other lane (they'll be resolved locally)\n *\n * 2. Handles data dependencies merge (auto-detected dependencies):\n * - Merges auto-detected deps from both current and other\n * - For each dependency, determines if it should be added, kept, or marked as conflict\n * - Ignores environment dependencies (handled separately by envStrategy)\n * - Skips workspace dependencies (resolved to workspace version)\n *\n * 3. Conflict detection:\n * - Version conflicts marked with special format: \"CONFLICT::currentVer::otherVer::\"\n * - Respects merge strategy (ours/theirs/manual) for automatic resolution\n *\n * Returns:\n * - undefined if this is not the dependency-resolver aspect\n * - MergeStrategyResult with either:\n * - mergedConfig: successfully merged dependency policy\n * - conflict: conflicted dependencies marked with version conflicts\n */\n private depResolverStrategy(params: MergeStrategyParams): MergeStrategyResult | undefined {\n if (params.id !== DependencyResolverAspect.id) return undefined;\n this.logger.trace(`start depResolverStrategy for ${this.compIdStr}`);\n const { currentExt, otherExt, baseExt } = params;\n\n const currentConfig = this.getConfig(currentExt);\n const currentConfigPolicy = this.getPolicy(currentConfig);\n const otherConfig = this.getConfig(otherExt);\n const otherConfigPolicy = this.getPolicy(otherConfig);\n\n const baseConfig = baseExt ? this.getConfig(baseExt) : undefined;\n const baseConfigPolicy = baseConfig ? this.getPolicy(baseConfig) : undefined;\n\n this.logger.debug(`currentConfig, ${JSON.stringify(currentConfig, undefined, 2)}`);\n this.logger.debug(`otherConfig, ${JSON.stringify(otherConfig, undefined, 2)}`);\n this.logger.debug(`baseConfig, ${JSON.stringify(baseConfig, undefined, 2)}`);\n\n const getAllDeps = (ext: ExtensionDataList): SerializedDependencyWithPolicy[] => {\n const data = ext.findCoreExtension(DependencyResolverAspect.id)?.data.dependencies;\n if (!data) return [];\n const policy = ext.findCoreExtension(DependencyResolverAspect.id)?.data.policy || [];\n return data.map((d) => {\n const idWithoutVersion = d.__type === 'package' ? d.id : d.id.split('@')[0];\n const existingPolicy = policy.find((p) => p.dependencyId === idWithoutVersion);\n const getPolicyVer = () => {\n if (d.__type === 'package') return undefined; // for packages, the policy is already the version\n if (existingPolicy) return existingPolicy.value.version; // currently it's missing, will be implemented by @Gilad\n return d.version;\n // if (!semver.valid(d.version)) return d.version; // could be a hash\n // // default to `^` or ~ if starts with zero, until we save the policy from the workspace during tag/snap.\n // return d.version.startsWith('0.') ? `~${d.version}` : `^${d.version}`;\n };\n return {\n ...d,\n id: idWithoutVersion,\n policy: getPolicyVer(),\n };\n });\n };\n const getDataPolicy = (ext: ExtensionDataList): VariantPolicyEntry[] => {\n return ext.findCoreExtension(DependencyResolverAspect.id)?.data.policy || [];\n };\n\n const getAutoDeps = (ext: ExtensionDataList): SerializedDependencyWithPolicy[] => {\n const allDeps = getAllDeps(ext);\n return allDeps.filter((d) => d.source === 'auto');\n };\n\n const currentAutoData = getAutoDeps(this.currentAspects);\n const currentAllData = getAllDeps(this.currentAspects);\n const currentDataPolicy = getDataPolicy(this.currentAspects);\n const otherData = getAutoDeps(this.otherAspects);\n const currentAndOtherData = uniqBy(currentAutoData.concat(otherData), (d) => d.id);\n const currentAndOtherComponentsData = currentAndOtherData.filter((c) => c.__type === 'component');\n const baseData = getAutoDeps(this.baseAspects);\n\n const getCompIdStrByPkgNameFromData = (pkgName: string): string | undefined => {\n const found = currentAndOtherComponentsData.find((d) => d.packageName === pkgName);\n return found?.id;\n };\n\n const getFromCurrentDataByPackageName = (pkgName: string) => {\n return currentAllData.find((d) => {\n if (d.__type === 'package') return d.id === pkgName;\n return d.packageName === pkgName;\n });\n };\n\n const getFromCurrentDataPolicyByPackageName = (pkgName: string) => {\n return currentDataPolicy.find((d) => d.dependencyId === pkgName);\n };\n\n const mergedPolicy: Record<string, PolicyDependency[]> = {\n dependencies: [],\n devDependencies: [],\n peerDependencies: [],\n };\n const conflictedPolicy: Record<string, PolicyDependency[]> = {\n dependencies: [],\n devDependencies: [],\n peerDependencies: [],\n };\n let hasConflict = false;\n const lifecycleToDepType = {\n runtime: 'dependencies',\n dev: 'devDependencies',\n peer: 'peerDependencies',\n };\n const handleConfigMerge = () => {\n const addVariantPolicyEntryToPolicy = (dep: VariantPolicyEntry) => {\n const compIdStr = getCompIdStrByPkgNameFromData(dep.dependencyId);\n if (compIdStr && this.isIdInWorkspaceOrOtherLane(compIdStr, dep.value.version)) {\n // no need to add if the id exists in the workspace (regardless the version)\n return;\n }\n const fromCurrentData = getFromCurrentDataByPackageName(dep.dependencyId);\n if (fromCurrentData && !dep.force) {\n if (fromCurrentData.version === dep.value.version) return;\n if (\n !isHash(fromCurrentData.version) &&\n !isHash(dep.value.version) &&\n semver.satisfies(fromCurrentData.version, dep.value.version)\n ) {\n return;\n }\n }\n const fromCurrentDataPolicy = getFromCurrentDataPolicyByPackageName(dep.dependencyId);\n if (fromCurrentDataPolicy && fromCurrentDataPolicy.value.version === dep.value.version) {\n // -- updated comment --\n // not sure why this block is needed. this gets called also from this if: `if (baseConfig && this.areConfigsEqual(baseConfig, currentConfig)) {`\n // and in this case, it's possible that current/base has 5 deps, and other just added one and it has 6.\n // in which case, we do need to add all these 5 in additional to the new one. otherwise, only the new one appears in the final\n // merged object, and all the 5 deps are lost.\n // --- previous comment ---\n // that's a bug. if it's in the data.policy, it should be in data.dependencies.\n // return;\n }\n const depType = lifecycleToDepType[dep.lifecycleType];\n mergedPolicy[depType].push({\n name: dep.dependencyId,\n version: dep.value.version,\n force: dep.force,\n });\n };\n\n if (this.areConfigsEqual(currentConfig, otherConfig)) {\n // No need to add unchanged config deps here - they will be rescued by\n // mergeScopeSpecificDepsPolicy() in merging.main.runtime during merge processing\n return;\n }\n if (baseConfig && this.areConfigsEqual(baseConfig, otherConfig)) {\n // was changed on current\n // No need to add unchanged config deps here - they will be rescued by\n // mergeScopeSpecificDepsPolicy() in merging.main.runtime during merge processing\n return;\n }\n if (currentConfig === '-' || otherConfig === '-') {\n throw new Error('not implemented. Is it possible to have it as minus?');\n }\n if (baseConfig && this.areConfigsEqual(baseConfig, currentConfig)) {\n // was changed on other\n if (otherConfigPolicy.length) {\n otherConfigPolicy.forEach((dep) => {\n addVariantPolicyEntryToPolicy(dep);\n });\n }\n // Check if any dependencies in current were deleted on other\n // If a dependency exists in base and current but not in other, it was deleted on other\n currentConfigPolicy.forEach((currentDep) => {\n const baseDep = baseConfigPolicy?.find((d) => d.dependencyId === currentDep.dependencyId);\n const otherDep = otherConfigPolicy.find((d) => d.dependencyId === currentDep.dependencyId);\n if (baseDep && !otherDep) {\n // Dependency was deleted on other - add it with version: '-' to mark for deletion\n const depType = lifecycleToDepType[currentDep.lifecycleType];\n mergedPolicy[depType].push({\n name: currentDep.dependencyId,\n version: '-',\n });\n }\n });\n return;\n }\n\n // either no baseConfig, or baseConfig is also different from both: other and local. that's a conflict.\n if (!currentConfig.policy && !otherConfig.policy) return;\n const currentAndOtherConfig = uniqBy(currentConfigPolicy.concat(otherConfigPolicy), (d) => d.dependencyId);\n currentAndOtherConfig.forEach((dep) => {\n const depType = lifecycleToDepType[dep.lifecycleType];\n const currentDep = currentConfigPolicy.find((d) => d.dependencyId === dep.dependencyId);\n const otherDep = otherConfigPolicy.find((d) => d.dependencyId === dep.dependencyId);\n const baseDep = baseConfigPolicy?.find((d) => d.dependencyId === dep.dependencyId);\n\n if (!otherDep) {\n return;\n }\n if (!currentDep) {\n // only on other\n addVariantPolicyEntryToPolicy(otherDep);\n return;\n }\n const currentVer = currentDep.value.version;\n const otherVer = otherDep.value.version;\n if (currentVer === otherVer) {\n return;\n }\n const baseVer = baseDep?.value.version;\n if (baseVer && baseVer === otherVer) {\n return;\n }\n if (baseVer && baseVer === currentVer) {\n addVariantPolicyEntryToPolicy(otherDep);\n return;\n }\n const compIdStr = getCompIdStrByPkgNameFromData(dep.dependencyId);\n if (compIdStr && this.isIdInWorkspaceOrOtherLane(compIdStr, otherVer)) {\n // no need to add if the id exists in the workspace (regardless the version)\n return;\n }\n if (this.mergeStrategy === 'theirs') {\n addVariantPolicyEntryToPolicy(otherDep);\n return;\n }\n if (this.mergeStrategy === 'ours') {\n return;\n }\n\n hasConflict = true;\n conflictedPolicy[depType].push({\n name: currentDep.dependencyId,\n version: `${conflictIndicator}${currentVer}::${otherVer}::`,\n force: currentDep.force,\n });\n });\n };\n\n handleConfigMerge();\n\n const hasConfigForDep = (depType: string, depName: string) => mergedPolicy[depType].find((d) => d.name === depName);\n const getDepIdAsPkgName = (dep: SerializedDependencyWithPolicy): string => {\n if (dep.__type !== 'component') {\n return dep.id;\n }\n return dep.packageName!;\n };\n\n const addSerializedDepToPolicy = (dep: SerializedDependencyWithPolicy) => {\n const depType = lifecycleToDepType[dep.lifecycle];\n if (dep.__type === 'component' && this.isIdInWorkspaceOrOtherLane(dep.id, dep.version)) {\n return;\n }\n if (hasConfigForDep(depType, dep.id)) {\n return; // there is already config for it.\n }\n mergedPolicy[depType].push({\n name: getDepIdAsPkgName(dep),\n version: dep.policy || dep.version,\n force: false,\n });\n };\n\n this.logger.debug(\n `currentData, ${currentAllData.length}\\n${currentAllData\n .map((d) => `${d.__type} ${d.id} ${d.version}`)\n .join('\\n')}`\n );\n this.logger.debug(\n `otherData, ${otherData.length}\\n${otherData.map((d) => `${d.__type} ${d.id} ${d.version}`).join('\\n')}`\n );\n this.logger.debug(\n `baseData, ${baseData.length}\\n${baseData.map((d) => `${d.__type} ${d.id} ${d.version}`).join('\\n')}`\n );\n\n // eslint-disable-next-line complexity\n currentAndOtherData.forEach((depData) => {\n this.logger.trace(`depData.id, ${depData.id}`);\n if (this.isEnv(depData.id)) {\n // ignore the envs\n return;\n }\n const currentDep = currentAllData.find((d) => d.id === depData.id);\n const otherDep = otherData.find((d) => d.id === depData.id);\n const baseDep = baseData.find((d) => d.id === depData.id);\n\n this.logger.trace(`currentDep`, currentDep);\n this.logger.trace(`otherDep`, otherDep);\n this.logger.trace(`baseDep`, baseDep);\n if (!otherDep) {\n return;\n }\n if (!currentDep) {\n if (baseDep) {\n // exists in other and base, so it was removed from current\n return;\n }\n // only on other\n addSerializedDepToPolicy(otherDep);\n return;\n }\n\n if (currentDep.policy && otherDep.policy) {\n if (semver.satisfies(currentDep.version, otherDep.policy)) {\n return;\n }\n if (semver.satisfies(otherDep.version, currentDep.policy)) {\n return;\n }\n }\n\n const currentVer = currentDep.policy || currentDep.version;\n const otherVer = otherDep.policy || otherDep.version;\n if (currentVer === otherVer) {\n return;\n }\n const baseVer = baseDep?.policy || baseDep?.version;\n if (baseVer && baseVer === otherVer) {\n return;\n }\n const currentId = currentDep.id;\n if (currentDep.__type === 'component' && this.isIdInWorkspaceOrOtherLane(currentId, otherDep.version)) {\n // dependencies that exist in the workspace, should be ignored. they'll be resolved later to the version in the ws.\n return;\n }\n const depType = lifecycleToDepType[currentDep.lifecycle];\n if (hasConfigForDep(depType, currentDep.id)) {\n return; // there is already config for it.\n }\n if (baseVer && baseVer === currentVer) {\n addSerializedDepToPolicy(otherDep);\n return;\n }\n if (this.mergeStrategy === 'theirs') {\n addSerializedDepToPolicy(otherDep);\n return;\n }\n if (this.mergeStrategy === 'ours') {\n return;\n }\n hasConflict = true;\n conflictedPolicy[depType].push({\n name: getDepIdAsPkgName(currentDep),\n version: `${conflictIndicator}${currentVer}::${otherVer}::`,\n force: false,\n });\n });\n\n ['dependencies', 'devDependencies', 'peerDependencies'].forEach((depType) => {\n if (!mergedPolicy[depType].length) delete mergedPolicy[depType];\n if (!conflictedPolicy[depType].length) delete conflictedPolicy[depType];\n });\n\n const config = Object.keys(mergedPolicy).length ? { policy: mergedPolicy } : undefined;\n const conflict = hasConflict ? conflictedPolicy : undefined;\n\n this.logger.debug('final mergedConfig', config);\n this.logger.debug('final conflict', conflict);\n\n return { id: params.id, mergedConfig: config, conflict };\n }\n\n private isIdInWorkspaceOrOtherLane(id: string, versionOnOtherLane?: string): boolean {\n return Boolean(this.getIdFromWorkspace(id)) || this.otherLaneIdsStr.includes(`${id}@${versionOnOtherLane}`);\n }\n\n private getIdFromWorkspace(id: string): ComponentID | undefined {\n return this.workspaceIds.find((c) => c.toStringWithoutVersion() === id);\n }\n\n private isEnv(id: string) {\n return id === this.currentEnv.id || id === this.otherEnv.id;\n }\n\n private getConfig(ext: ExtensionDataEntry): GenericConfigOrRemoved {\n if (ext.rawConfig === '-') return ext.rawConfig;\n return omit(ext.rawConfig, ['__specific']);\n }\n\n private getPolicy(config): VariantPolicyEntry[] {\n if (!config.policy) return [];\n return VariantPolicy.fromConfigObject(config.policy).entries;\n }\n}\n"],"mappings":"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","ignoreList":[]}
package/dist/index.d.ts CHANGED
@@ -2,6 +2,6 @@ import { ConfigMergerAspect } from './config-merger.aspect';
2
2
  export type { ConfigMergerMain } from './config-merger.main.runtime';
3
3
  export type { WorkspaceDepsUpdates, WorkspaceDepsConflicts, WorkspaceConfigUpdateResult, } from '@teambit/component.modules.merge-helper';
4
4
  export type { ConfigMergeResult } from './config-merge-result';
5
- export { ComponentConfigMerger } from './component-config-merger';
5
+ export { ComponentConfigMerger, PolicyDependency } from './component-config-merger';
6
6
  export default ConfigMergerAspect;
7
7
  export { ConfigMergerAspect };
package/dist/index.js CHANGED
@@ -15,6 +15,12 @@ Object.defineProperty(exports, "ConfigMergerAspect", {
15
15
  return _configMerger().ConfigMergerAspect;
16
16
  }
17
17
  });
18
+ Object.defineProperty(exports, "PolicyDependency", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _componentConfigMerger().PolicyDependency;
22
+ }
23
+ });
18
24
  exports.default = void 0;
19
25
  function _configMerger() {
20
26
  const data = require("./config-merger.aspect");
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 } from './config-merger.main.runtime';\nexport type {\n WorkspaceDepsUpdates,\n WorkspaceDepsConflicts,\n WorkspaceConfigUpdateResult,\n} from '@teambit/component.modules.merge-helper';\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","ignoreList":[]}
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 } from './config-merger.main.runtime';\nexport type {\n WorkspaceDepsUpdates,\n WorkspaceDepsConflicts,\n WorkspaceConfigUpdateResult,\n} from '@teambit/component.modules.merge-helper';\nexport type { ConfigMergeResult } from './config-merge-result';\nexport { ComponentConfigMerger, PolicyDependency } 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;AAAoF,IAAAG,QAAA,GAAAC,OAAA,CAAAC,OAAA,GACrEC,kCAAkB","ignoreList":[]}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/config-merger",
3
- "version": "0.0.662",
3
+ "version": "0.0.664",
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.662"
9
+ "version": "0.0.664"
10
10
  },
11
11
  "dependencies": {
12
12
  "lodash": "4.17.21",
@@ -26,11 +26,11 @@
26
26
  "@teambit/legacy.constants": "0.0.19",
27
27
  "@teambit/legacy.consumer-component": "0.0.85",
28
28
  "@teambit/pkg.modules.semver-helper": "0.0.17",
29
- "@teambit/builder": "1.0.795",
30
- "@teambit/dependency-resolver": "1.0.795",
31
- "@teambit/envs": "1.0.795",
32
- "@teambit/objects": "0.0.302",
33
- "@teambit/workspace": "1.0.795"
29
+ "@teambit/builder": "1.0.797",
30
+ "@teambit/dependency-resolver": "1.0.797",
31
+ "@teambit/envs": "1.0.797",
32
+ "@teambit/objects": "0.0.304",
33
+ "@teambit/workspace": "1.0.797"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@types/lodash": "4.14.165",